1、let、var、const
区别:let只在本身所在的代码块中才会生效var则是全局生效;let在声明变量之前使用会报错;而var则可以使用,返回undefined;let不允许对同一个变量重复声明;const声明一个只读的常量。一旦声明,常量的值就不能改变;const不可重复声明。
es6中除了let、const声明变量之外还有import和class
2、解构赋值:针对于对象和数组。
数组解构等号两边必须是数组,允许赋默认值,但条件是数组成员严格等于undefined,默认值才能生效。
对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。
let { foo: baz } = { foo: "aaa", bar: "bbb" };
baz // "aaa"
foo // error: foo is not defined
两者不同:数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
3、函数的扩展
参数的默认值可以写在参数的后面
函数参数与解构赋值默认值结合使用
函数的length属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,length属性将失真,不包括rest参数
rest参数是简化后的arguments参数,形式为数组,数组具有的属性其都具有,并且为一个函数的最后一个函数,若非,则报错。
name属性,将一个匿名函数赋值给一个变量es6中会返回该变量名,若将一个具名函数赋值给一个变量,则返回该具名函数的函数名。
4、symbol
一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
可以接受一个字符串作为参数,目的是为了区分不同的声明变量
可以接受一个对象作为参数,默认会执行对象中的toString()属性
5、Set、Map数据结构
Set它类似于数组,但是成员的值都是唯一的,没有重复的值,可用于数组去重。...set。
在set内部认为NaN是相等的,所以加入两个NaN会去重。而认为对象{}是不相等的。
网友评论