ES6中let在for循环中的疑惑?

clipboard.png
clipboard.png
如图,上图说明i已经被声明了,也就是不可以重复声明;而下图中却能用let重新声明,为什么?

阅读 4.3k
2 个回答

为什么let能重复声明? 图示图片描述


关于let声明跟var声明为什么会冲突? 首先 var 声明会提升到当前作用的顶端,即顺序是这样的:

  1. var i

  2. 才是开始走for循环

  3. 才开始解析 let i = 0 --->报错
    再看图

图片描述

// for是一个区块,内部又是一个小区块,你的代码可以简写为
{
    let i = 0;  // i作用于这个大区块
    {
        var i = 'abc';  // 此处的i也作用于这个大区块
        console.log(i);
    }
}

{
    let i = 0; // i作用于这个大区块
    {
        let    i = 'abc'; // i作用于这个小区块
        console.log(i);
    }
}

// 如果你这么写是可以的
for (var i = 0; i < 3; i++) {
    let i = 'abc';
    console.log(i);
}
// 简写
{
    var i = 0; // i作用于这个大区块
    {
        let    i = 'abc'; // i作用于这个小区块
        console.log(i);
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题