1.let/const
// 暂时性死区function bar(x = y, y = 2) { return [x, y];}bar(); // 报错 上面代码中,调用bar函数之所以报错(某些实现可能不报错),是因为参数x默认值等于另一个参数y,而此时y还没有声明,属于”死区“。如果y的默认值是x,就不会报错,因为此时x已经声明了。function bar(x = 2, y = x) { return [x, y];}bar(); // [2, 2]// 不报错var x = x;// 报错let x = x;// ReferenceError: x is not defined复制代码
未完待续...