小编qwe*_*xcj的帖子

let vs var:for 循环中的作用域

有人解释一下这个(var 和 let in for 循环之间的行为差​​异)吗?

  1. 经典面试题(结束语):

    let a = [];
    for (var i=0; i<10; i++) {
        a[i] = function() {
          console.log(i,);
        }
    }
    a[0](); // 10
    a[1](); // 10
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果我们使用让:

    let a = [];
    for (let i=0; i<10; i++) {    // var => let
        a[i] = function() {
        console.log(i);
      }
    }
    
    a[0](); // 1
    a[1](); // 2
    
    Run Code Online (Sandbox Code Playgroud)

是的,我在使用“让”时正常并且符合预期。我想到的第一个想法是 let 不支持关闭。但不,它支持。(随后在 Chrome 上对其进行了测试):

function bb() {
  let b = 1;
  return function() {
    console.log(b);
  }
}
bb()();    // 1, means …
Run Code Online (Sandbox Code Playgroud)

javascript closures for-loop ecmascript-6

3
推荐指数
1
解决办法
971
查看次数

标签 统计

closures ×1

ecmascript-6 ×1

for-loop ×1

javascript ×1