2017-01-08 5 views
1
var data = ["s","a"] 
    var asyncFunctionss = []; 

    for (var i in data) { 
     asyncFunctionss.push(function (callback) { 
      console.log(i); 
     }); 
    } 
    for (var g in asyncFunctionss) { 
     asyncFunctionss[g](); 
    } 

私はこのプログラムを実行しようとすると、次の出力が表示されます。どのようにforループと関数内のインデックスとのJavaScriptで動的関数を作成する

は出力

実際の出力期待される出力を達成するためにどのように

期待しますか?

+0

@melpomeneすごい、:その理由はすぐにasyncFunctionssにおける機能要素を変数と呼ばれているとして、私ははすでに私はあなたは、変数の値を覚えて生命維持を使用することができます。1.されていることですforEachメソッドは私のために働く。どうもありがとうございます。 –

+0

forEachにはそれぞれ独自のスコープがあります。 –

答えて

2

IIFEが必要です。

var data = ["s","a"] 
var asyncFunctionss = []; 

for (var i in data) { 
    (function(i){ 
    asyncFunctionss.push(function (callback) { 
     console.log(i); 
    }); 
    })(i); 
} 
for (var g in asyncFunctionss) { 
    asyncFunctionss[g](); 
} 
関連する問題