个人的ES6笔记
const一般在require一个模块的时候用或者定义一些全局常量。而let是限制了变量的作用域,保证变量不会去污染全局变量。所以尽量将var改为用let
Array 类型
push()、pop()和shift():以上都为方法
栈数据结构的访问规则是 LIFO (后进先出),而队列数据结构的访问规则是 FIFO (First-In-First-Out,先进先出)
es6提供了一个unshift方法就是与shift用途想法的方法
unshift就是区别于shift,他是从后面推出,而不是从前面计算后推出
重排序方法
reverse()和sort() :也同为方法,为反选数组项的顺序
reverse方法由于使用不方便所以才衍生出sort方法,而sort方法则思通过toString()转型方法去将字符转为ascll码进行比较,把最大放最后面,最小的则放在最前面。
concat()方法
concat() 方法可以基于当前数组中的所有项创建一个新数组,他会将非数组项添加到已创建好的项目后面,并按照顺序排列。
例子:
1 | var colors = ["red","green","blue"]; |
2 | |
3 | var colors=colors.concat("yellow",["black","brown"],"white"); |
slice()方法
slice() 方法可以接受一或两个参数,即要返回项的起始和结束位置。
splice()方法
splice插入的第二个参数为0,替换的第二个参数为1
- 删除。例子:splice(0,2),删除数组中的前两项。
- 插入。例子:splice(2,0,”red”,”green”)从当前数组的位置 2 开始插入字符串 “red” 和 “green”。前两个项为参数,后面的项为可插入多个项。
- 替换。例子:splice(2,1,”red”,”green”)除当前数组位置 2 的项,然后再从位置 2 开始插入字符串
“red” 和 “green”。
总结:插入原理应该也是替换,他就是将空的值提取存入到这个定义中,再把空出来的空间替换成定义的量。
例子:
1 | var colors = ["red", "green", "blue"]; |
2 | var removed = colors.splice(0,1); |
3 | // 删除第一项 |
4 | alert(colors); |
5 | // green,blue |
6 | alert(removed); |
7 | // red,返回的数组中只包含一项 |
8 | |
9 | removed = colors.splice(1, 0, "yellow", "orange"); |
10 | alert(colors); |
11 | // green,yellow,orange,blue |
12 | alert(removed); |
13 | // 返回的是一个空数组 // 从位置 1 开始插入两项 |
14 | removed = colors.splice(1, 1, "red", "purple"); |
15 | alert(colors); |
16 | // green,red,purple,orange,blue |
17 | alert(removed); |
18 | // yellow,返回的数组中只包含一项 // 插入两项,删除一项 |
5.2.7 位置方法
- indexOf()
- lastIndexOf()
这两个方法都接受两个参数,indexOf() 方法从数组的开头(位置 0)开始向后查找, lastIndexOf() 方法则从数组的末尾开始向前查找
这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。
5.2.8 迭代方法
- every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。
- filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
- forEach() :对数组中的每一项运行给定函数。这个方法没有返回值。
- map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
- some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。
every()和some()都是用于查询数组中的项是否满足某个条件。
对 every() 来说,传入的函数必须对每一项都返回 true ,这个方法才返回 true ;否则,它就返回false 。而 some() 方法则是只要传入的函数对数组中的某一项返回 true ,就会返回 true 。
例子:
1 | var numbers = [1,2,3,4,5,4,3,2,1]; |
2 | var everyResult = numbers.every(function(item, index, array){ |
3 | return (item > 2); |
4 | }); |
5 | alert(everyResult); |
6 | //false |
7 | var someResult = numbers.some(function(item, index, array){ |
8 | return (item > 2); |
9 | }); |
10 | alert(someResult); |
11 | //true |
every() 和 some() , 传入的函数只要给定项大于 2 就会返回 true 。对于 every() ,它返回的是 false ,因为只有部分数组项符合条件。对于 some() ,结果就是 true ,因为至少有一项是大于 2 的。
5.29归并方法
两个归并数组的方法: reduce() 和 reduceRight()
reduce()方法是从左往右求和,而reduceRight()则是通过相反方向也就是从右往左求和。
5.3 Date类型
Date.parse() 方法接收一个表示日期的字符串参数,根据这个字符串返回相应日
期的毫秒数
5.4 RegExp 类型&&属性
RegExp 的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息。
global :布尔值,表示是否设置了 g 标志。
ignoreCase :布尔值,表示是否设置了 i 标志。
lastIndex :整数,表示开始搜索下一个匹配项的字符位置,从 0 算起。
multiline :布尔值,表示是否设置了 m 标志。
source :正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
通过这些属性可以获知一个正则表达式的各方面信息,但却没有多大用处,因为这些信息全都包含在模式声明中
例子:
1 | var pattern1 = /\[bc\]at/i; |
2 | alert(pattern1.global); |
3 | alert(pattern1.ignoreCase); |
4 | alert(pattern1.multiline); |
5 | alert(pattern1.lastIndex); |
6 | alert(pattern1.source); |
7 | |
8 | var pattern2 = new RegExp("\\[bc\\]at", "i"); |
9 | alert(pattern2.global); |
10 | alert(pattern2.ignoreCase); |
11 | alert(pattern2.multiline); |
12 | alert(pattern2.lastIndex); |
13 | alert(pattern2.source); |
5.4.2 RegExp实例方法
RegExp 对象的主要方法是 exec()
5.5.5 函数属性和方法
apply(),call(),取决于采用哪种传递参数。如果有arguments对象,或者包括一个数组,那么使用apply()会更方便,否则使用call()更方便。
5.6 基本包装类型
1 | var s1 = new String("some text"); |
2 | var s2 = s1.subString(2); |
3 | s1 = null; |
以上分别适用Boolean和Number对应的布尔值和数字值
5.7 单体内置对象
5.7.1 Global对象
2.evel()方法
evel()方法就像是一个完整的 ECMAScript 解析器,它只接受一个参数,即要执行的 ECMAScript (或 JavaScript)字符串。
1 | evel("alert('hi')"); === alert("hi") |
当解析器发现代码中调用 eval() 方法时,它会将传入的参数当作实际的 ECMAScript 语句来解析,然后把执行结果插入到原位置。通过 eval() 执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链。
3.Global对象的属性
Global包含的属性:undefined、NaN、Infinity

ES5禁止给undefined、NaN、Infinity赋值。
5.7.2 Math对象
2.max()和min()的方法
要找到数组中的最大或最小值,可以像下面这样使用 apply() 方法
例子:
1 | var values = [1,2,3,4,5,6,7,8]; |
2 | var max = Math.max.apply(Math,values) |
3. 舍入方法
Math.ceil() 执行向上舍入,即它总是将数值向上舍入为最接近的整数;(无论小数多小都进1)
Math.floor() 执行向下舍入,即它总是将数值向下舍入为最接近的整数;(无论小数多大,都舍去)
Math.round() 执行标准舍入,即它总是将数值四舍五入为最接近的整数(5<=进1)
4. random() 方法
Math.random() 方法返回大于等于 0 小于 1 的一个随机数。
1 | var num = Math.floor(Math.random() * 10 + 1); |
假设random = 0.3,则:
num = 0.3 * 10 + 1 = 4;
Math.floor()不看小数,直接取整。
函数 selectFrom() 接受两个参数:应该返回的最小值和最大值。而用最大值减最小值再加 1 得到
了可能值的总数,然后它又把这些数值套用到了前面的公式中。这样,通过调用 selectFrom(2,10)
就可以得到一个介于 2 和 10 之间(包括 2 和 10)的数值了。利用这个函数,可以方便地从数组中随机
取出一项
例如:
1 | function selectFrom(lowerValue, upperValue) { |
2 | var choices = upperValue - lowerValue + 1; |
3 | return Math.floor(Math.random() * choices + lowerValue); |
4 | } |
5 | var num = selectFrom(2, 10); |
6 | alert(num); |
7 | // 介于 2 和 10 之间(包括 2 和 10)的一个数值 |
把 configurable 设置为 false ,表示不能从对象中删除属性