总结ES6中新增的特性。
1.块级作用域 let和const
2.数组扩展
• Array.from() 将伪数组对象或者可遍历的对象转化为数组。
• Array.of(v1,v2,v3) 将一系列值转换数组。
• Find() 用于找出第一个符合条件的数组成员,参数为回调函数,所有数组成员依次执行该回调,找到返回成员找不到返回undefined。
• Findindex() 与find类似,用于返回第一个符合条件的数组成员位置。如果都不符合返回 -1.
• Includes() 返回一个bool值,表示数组中是否包含给定的值。方法第二个参数表示搜索的位置。没有该方法之前是根据indexof()方法判断的,他的含义就是找到参数的第一次出现的位置,然后和-1比较,表达不都直观。indexof内部使用较为严格的相等运算符,导致NAN误判。
• Keys(),Values(),entries()方法,他们都是返回一个遍历器对象,可以用for…of循环进行遍历,唯一的区别就是keys() 是对键名进行遍历,values()是对键值进行遍历,enties()是对键值对的遍历。
3.箭头函数:实质匿名函数
它有两个作用1.缩减代码,和改变this指向
注意点
• 多个参数记得加括号 const double6=(number1,number2)=>number1+number2;
• 如果代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return 语句返回。Const double=(num1,num2)=>{ let sum=num1+num2;return sum;} 由于大括号被解释为代码块,所以箭头函数直接返回一个对像,必须在对象外面加括号,否则报错。比如 let tt=id=>({id:id,name:'temp'})
• 简化回调函数 [1,23.3].map(x=>x*x);
• 改变this指向。
• 函数体内的this对象就是定义是所在的对象,而不是使用时所在的对象。
4.rest参数
引入rest参数(形式为"…变量名"),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
5.扩展运算符
与剩余参数关联最密切的就是扩展运算符。剩余参数允许把多个独立的参数合并到一个数组中,而扩展运算符则允许将一个数组进行分割,并将各个项作为分离的参数传递给函数。用在字符串或者数组前面的”…“称为扩展运算符,可以将扩展运算符称理解为rest參数的逆运算,它用于将数组或者字符串进行拆解。有些时候,函数不允许传入数组,此时使用扩展运算符很方便比如Math.max()方法,它接受任意数量的参数,并返回最大值。
Let value=[12,344,56,4,6]
Console.log(Math.max(…value)); //344
6.解构赋值。
就是将数据结构分解为更小部分的过程。解构赋值是一种更方便的数据访问方式。
注意:当使用结构来配合var let const声明变量时,必须提供初始 话程序(即等号右边的值)
7.模板字符串
模板字符串是增强版的字符串,用反引号 ` `标识,它可以当作普通字符串,也开始当作定义多行字符串,或者在字符串中引入变量。模板字符串引入变量或者函数,需要将变量写在${}中。
8.class和传统的构造函数。
9.promise的基本使用和原理。
在js的世界中,所有代码都是单线程执行的.由于这个缺陷,导致js的所有网络操作和浏览器事件都必须是异步执行的。pormise是异步编程的一种解决方案,比传统的解决方案回调和事件更合理了,更强大。
10.Iterator和for…of循环
js原有表示的集合的数据结构主要是数组Array和object,es6又添加了Map和Set.这样就需要一种统一的接口机制来处理不同的数据结构。遍历器Letrator就是这种机制。他是一种接口,为各种不同的数据结构提供统一的访问机制。
遍历方式比较
• For…of 循环不仅支持数组和大多数位数组对象,也支持字符串遍历,此外还支持遍历set和Map对象。
• For…in 循环可以遍历字符串,对象和数组,但是不支持遍历set 和Map对象。
• Foreach 循环不能遍历字符串和对象,支持遍历set和map对象。
11.ES6模块化
即export和import.export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。