关闭疯狂

时间:2019-06-12 13:42:14

标签: javascript closures

第一个示例:

var arr = [];
for (var i = 0; i < 5; i++) {
  arr[i] = function() {
    return i
  }
}
console.log(arr[0]()); // 5
console.log(arr[1]()); // 5 etc

第二个示例:

var arr = [];
for (var i = 0; i < 5; i++) {
  (function() {
    var x = i;
    arr[i] = function() {
      return x
    }
  })();
}
console.log(arr[0]()); // 0
console.log(arr[1]()); // 1

能否请您详细解释一下,因为据我所知,当创建闭包时,它获取的是变量的实际值,而不是变量的副本,因此在第二个示例中,它应该相同输出与第一个相同。

0 个答案:

没有答案