相关疑难解决方法(0)

JavaScript不支持使用局部变量进行闭包吗?

我对这段代码感到非常困惑:

var closures = [];
function create() {
  for (var i = 0; i < 5; i++) {
    closures[i] = function() {
      alert("i = " + i);
    };
  }
}

function run() {
  for (var i = 0; i < 5; i++) {
    closures[i]();
  }
}

create();
run();
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它应该打印0,1,2,3,4(这不是闭包的概念吗?).

而是打印5,5,5,5,5.

我试过Rhino和Firefox.

有人可以向我解释这种行为吗?Thx提前.

javascript closures loops

57
推荐指数
4
解决办法
2万
查看次数

标签 统计

closures ×1

javascript ×1

loops ×1