我试图理解 javascript 闭包。我读了一个示例代码:
function buildList(list) {
var result = [];
for (var i = 0; i < list.length; i++) {
var item = 'item' + list[i];
result.push( function() {alert(item + ' ' + list[i])} );
}
return result;
}
var fnlist = buildList([1,2,3]);
// using j only to help prevent confusion - could use i
for (var j = 0; j < fnlist.length; j++) {
fnlist[j]();
}
此代码将打印 3 次“item3 undefined”警报。我确实理解第 5 行的 item 变量中的“3”,但我不明白为什么它会从第 5 行的 list[i] 中打印出“undefined”?这不是也使用闭包来访问列表变量吗?有人可以解释一下吗?