1、let和const命令
对于const来说,只声明不赋值,就会报错
const的作用域与let命令相同:只在声明所在的块级作用域内有效
const和let都不存在是常量提升,同样存在暂时性死区,声明的常量都不可重复,都是先声明后使用
2、变量的解构赋值
默认值生效的条件是,对象的属性值严格等于undefined,如属性等于null,就导致默认值不会生效
如果解构失败,变量的值等于undefined
数值和布尔值的包装对象都有toString属性
解构赋值的规则是:只要等号右边的值不是对象或数组,就先将其转为对象,由于undefined和null无法转为对象,所以对他们进行解构赋值都会报错
不能使用圆括号的情况:
(1)变量声明语句
(2)函数参数
(3)赋值语句的模式
只有赋值语句的非模式部分可以使用圆括号
**变量的解构赋值用途:
(1)交换变量的值
(2)从函数返回多个值
(3)函数参数的定义
(4)提取JSON数据
(5)函数参数的默认值
(6)遍历Map结构
(7)输入模块的指定方法
3、字符串的扩展
模板字符串用'(反引号)括起来,要嵌入变量和函数,需要将变量名和函数名写在${}之中
4、正则的扩展
字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()、split()
5、数值的扩展
es6在Number对象上,提供Number.isFinite()用来检查一个数值是否为有限的(finite)
Number.isNaN()用来检查一个值是否是NaN
Math.trunc()方法用于去除一个数的小数部分,返回整数部分(对于空值和无法截取整数的值,返回NaN)
Math.sign()方法用来判断一个数到底是正数、负数、还是零。
Math.cbrt()方法用于计算一个数的立方根
Math.imul()方法返回两个数以32位带符号整数形式相乘的结果
Math.hypot()方法返回所有参数的平方和的平方根
Math.expml()返回Math.exp(x)-1
Math.loglp(x)返回1+x的自然对数,即Math.log(1+x)。如果x小于-1,返回NaN
es2016新增了一个指数运算符(**),指数运算符可以与等号结合,形成一个新的 赋值运算符(**=)
a**=3等同于a=a*a*a
6、函数的扩展
es6引入rest参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用argument对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
箭头函数:ES6允许使用"箭头"(=>)定义函数,如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。如果箭头函数的代码部分多于一条语句,就要用大括号将他们括起来,并且使用return语句返回
使用注意点:(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(2)不可以当做构造函数,不可以使用new命令
(3)不可以使用arguments对象,该对象在函数体内不存在,如果要用,可以用rest参数代替
(4)不可以用yield命令,因此箭头函数不能用作Generator函数
7、数组的扩展
扩展运算符(spread):是三个点(...)。它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列