探讨一些js
探讨一些js
块级作用域中let的变量无法被外界访问,但var的可以
for(var i=0;i<2;i++){
for(var i=0;i<3;i++){}
}
console.log(i);//4
console.log("i" in window);//true
{
let a=1;
var b=2;
}
console.log(b);//2
console.log(a);//a is not defined
块级作用域中的function会被隐式提升为let声明
if(true){
var i=1;
function i(){};
var i=2;
}
//报错 Identifier 'i' has already been declared
for (var i = 0; i < 2; i++) {
function i() {};
for (var i = 0; i < 3; i++) {}
}
console.log(i);
//报错 Identifier 'i' has already been declared
原因:let不可以重复声明,会报错