重複の可能性:
Javascript の閉鎖?
以前にも質問されたかもしれませんが…
関数のリストが必要な場合
var funs = [
function(){ console.log(1); },
function(){ console.log(2); },
function(){ console.log(3); },
function(){ console.log(4); },
function(){ console.log(5); } ]
次のような方法で作成できるようです。
var funs = [];
for(var i=1; i <= 5; i++){
funs.push(function(){ console.log(i) };
}
i
変数はすべての関数にバインドされた単一の変数であるため、これは機能しません。
funs[0](); funs[1](); funs[2](); funs[3](); funs[4]();
出力
6
6
6
6
6
いいえ
1
2
3
4
5
これは私が望む出力ではありません。i
の参照で閉じるのではなく、関数の作成時にjavascript が の値のコピーをバインドするように強制する必要があると思いますi
。どうすればいいですか?