let和const

  1. 思考, 下面的代码为什么会输出不一样的结果?
for(var i = 0; i< 2; i++){
  setTimeout(function(){
    console.log(i)
  }, 100)
}
// 输出 2, 2

for(let i = 0; i<  2; i++){
  setTimeout(function(){
    console.log(i)
  }, 100)
}
// 输入 0, 1
  1. {}在es6中会生成一个块级作用域
  2. let/const 声明的变量会绑定当前的作用域,不受外部影响。
  3. for每一次循环, 会创建一个块级作用域。

上面的代码相当于

{   
    let i = 0;
    setTimeout(function () {
        console.log(i)
    }, 100)
}
{
    let i = 1;
    setTimeout(function () {
        console.log(i)
    }, 100)
}

你可能感兴趣的:(let和const)