for循环let跟var的区别

257 阅读1分钟

块级作用域

建立方式:声明一个函数:在函数内部 或者使用 {}

局部作用域和块级作用域的区别;多了一种声明方式 局部作用域就是块级作用域

在块级作用域声明变量时,作用域外无法访问到

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都有绑定到对应的事件上