2017-07-10 7 views
0

次のコードはうまくいきます。名前のない10個のfunctionsarrayにプッシュし、arrayの7番目のアイテムを正常に実行します。上記テスト機能が小さいであるが宣言した関数を配列にプッシュして後で呼び出す方法

var storeStuff = []; 
 

 
for (let i = 0; i < 10; i++) { 
 
    storeStuff.push(function() { 
 
    console.log(i * i); 
 
    }); 
 
} 
 

 
storeStuff[6]();

。私がコードの多くの行で大きなfunctionを持っていたなら、私はpushの外でそれを宣言したいと思うでしょう。

たとえば、pushを以前に定義したfunctionとし、後でこの例を呼び出すとしたらどうなりますか?書かれたよう

var storeStuff = []; 
 

 
function externalFunction(temp) { 
 
    console.log(temp * temp) 
 
} 
 

 
for (let i = 0; i < 10; i++) { 
 
    storeStuff.push(externalFunction(i)); 
 
} 
 

 
storeStuff[6]();

は、残念ながら、これは動作しませんし、私が試したすべてがクラッシュして燃やしました。私は何が間違っていますか? { storeStuff.push(externalFunction)

+3

以下。 } storeStuff [6](6); ' – mplungjan

+0

あなたは絶対に間違っていますか? – binariedMe

答えて

1

使用関数宣言として

var storeStuff = []; 

externalFunction = function(temp) { 
    console.log(temp * temp) 
} 

for (let i = 0; i < 10; i++) { 
    storeStuff.push(externalFunction); 
} 
storeStuff[6](6); 
あなたが(私は++; iは10 <= 0 Iを聞かせて) 'を意味してもよい
+0

あなたは間違いなしです! 'storeStuff.push(externalFunction);' i'カウンタをexternalFunctionに送ることを知っていますか?その関数を呼び出すときに渡すべき 'storeStuff.push(externalFunction(i));' – DR01D

+1

はなぜですか?あなたが使っているインデックスかもしれません。 storeStuff [6](6)と同様です。 storeStuff [7](7);等 – Vineesh

関連する問題