2016-12-12 3 views
0
function count() { 
    var arr = []; 
    for (var i=1; i<=3; i++) { 
     arr.push(function() { 
      return i * i; 
     }); 
    } 
    return arr; 
} 

var results = count(); 
var f1 = results[0]; 
var f2 = results[1]; 
var f3 = results[2]; 
f1(); // 16 
f2(); // 16 
f3(); // 16 

なぜ3つの入力がすべて16であるのか分かりません。私は)ので、forループの、(この場合は4を取っf1,f2,f3のそれぞれが、その関数へのfunction(){ return i * i; }(ノートtheresの引数、内部iませんので、最後の値iがある4,9JavaScriptのリターン関数の入力

+0

するvar squareCount =(関数(){ VARのC = 0; 復帰機能(){ C + = Math.pow(C、2); IF(Cの=== 0){C = 1。 returnC;} return C; }}); squareCount(); squareCount(); squareCount(); – PHPglue

答えて

1

、1があったと思いました。

+0

ただし、iは1から3まで設定されています。その場合は4であることを知っていますか? – slowjamsz11

関連する問題