- let
1.同一作用域中,声名变量时,不能重复定义。
2.必须先声名,后使用。(暂时性死区)
3.声名的变量不挂载到window对象上。(相当重要)
4.在一对大括号中{}
,声名变量时,会产生块级作用域,变量仅在此块级作用域中有效。
比如,for(){}
循坏,function(){}
,if(){}
语句等,都满足。
5.看如下代码
let a = 9;
{
console.log(a);
let a = 8;
}
这里报错Uncaught ReferenceError: a is not defined
。这里可以理解为就近原则,let a = 8
覆盖掉let a = 9
的影响
- 应用
1.可以解决闭包问题。
如下代码
for(let i =0;i<10;i++){
setTimeout(function () {
console.log(i)
},0)
}
//输出0-9
每一次执行循环,都会产生个自独立的块级作用域。