let和const
let和const两者并不存在变量提升,这里要说明的是变量一定要在声明后使用,否则报错。

例如,var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};}
a[6](); // 10
变量i是var声明的,要知道这里在全局范围内都有效。我们要知道在每一次循环中,新的i值都会覆盖旧值,这样就可以在最后输出的是最后一轮的i的值。
例如,var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};}
a[6](); // 6
我们可以看到在上面代码中,变量i是let声明的,要知道这个只有当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。
暂时性死区(temporal dead zone,简称TDZ)
当在块级作用域内存在let或const命令,则变量会被绑定在这个区域内,不受外层作用域的变量影响。凡在声明之前使用了变量,则会报错。注意,如果使用了let或const,typeof就不安全了。
例如,var tmp = 123;
if (true) {
tmp = ‘abc’; // ReferenceError
let tmp;
}
变量解构
解构必须左右解构相同。如果
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6819.html
