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]();
}
このコードは、「item3 undefined」アラートを 3 回出力します。5 行目の item 変数の "3" は理解できますが、5 行目の list[i] から "undefined" が出力される理由がわかりません。これもクロージャを使ってリスト変数にアクセスしていませんか?誰かがこれを説明できますか?