块级作用域
建立方式:声明一个函数:在函数内部 或者使用 {}
局部作用域和块级作用域的区别;多了一种声明方式 局部作用域就是块级作用域
在块级作用域声明变量时,作用域外无法访问到
let 相较于 var
1.let 相较于 var let不会提升当前代码到代码块顶部,因此需要手动调整,而var可以提升到当前作用域顶部;
2.使用let声明:不会自动成为window对象,但是使用var会成为window对象;
3.使用let关键词可以让{ }生成块级作用域(for循环中for(let = 0;i<len;i++){} ;这个let会生成一个新的作用域包含判断;),但关键词var 不行; {
let i = 0;
if(true){
var b = 1;
}
console.log(b);//这里输出的是1,说明可以访问到,所以if里面的{}不会变成块级作用域
} 我们可以吧for循环拆解开,像上面那样,先声明,然后同一个判断,这里如果使用let声明的话,会自动在外部声明一个块级作用域,把左右的内容包裹;然而if后面那个{}不会变成块级作用域;因为后面可以输入b是1;
有异议欢迎补充 var i = 0;
if(i<3){
console.log(i);
}
var i = 1;
if(i<3){
console.log(i);
}
var i = 2;
if(i<3){
console.log(i);
}
下面的i会把上面的i替换掉
{
let i = 0;
if(i<3){
console.log(i);
}
}
{
let i = 1;
if(i<3){
console.log(i);
}
}
{
let i = 2;
if(i<3){
console.log(i);
}
}
// 有块级作用域每个i都有绑定到对应的事件上