1、let声明的变量没有变量提升;
2、const声明的变量:块级作用域内有效,存在暂时性死区,变量指向的那个内存地址不得改动;
3、...tail解构出来的是数组或空数组
let [head, ...tail] = [1, 2, 3, 4]; head //1 tail //[2, 3, 4]
4、Iterator(遍历器)是一种接口,作用:一是为各种数据结构,提供一个统一的、简便的访问接口,二是使得数据结构的成员能够按某种次序排列,三是ES6创造了一种新的遍历命令for...of
循环,Iterator接口主要供for...of
消费。
在ES6中,有三类数据结构原生具备Iterator接口:数组、某些类似数组的对象(例如:字符串)、Set和Map结构。
默认调用Iterator接口的情况:
*解构赋值
*扩展运算符(...)
*任何接受数组作为参数的场合
只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值
5、解构赋值,默认值生效的条件是,对象的属性值严格等于undefined
var {x = 3} = {x: undefined}; x //3 默认值生效 var {x = 3} = {x: null}; x //null 默认值不生效