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