<div class="codetitle"> <span><a style="CURSOR: pointer" data="93281" class="copybut" id="copybut93281" onclick="doCopy('code93281')"><u>コードをコピー</u></a></span> コードは次のとおりです。</div> <div class="codebody" id="code93281"> <br><script type="text/javascript"> <br> function createArray() { <br>var arr = new Array(); <br>for (var i = 0; i arr[i] = function () { <br>return i; <br>} <br>} <br>return arr; <br>} <br>var funcs = createArray(); i ) { <br>document.write(funcs[i]() "<br />"); <br>} <br>//上記の出力はすべて i の最後の値 (10) です。つまり、10 は出力 10 になります。明らかに、これは私たちが望んでいることではありません <br>//理由: 各関数は createArray 関数のアクティブなオブジェクトを保存するため、それらはすべて同じ i (参照によって渡される値) を参照します <br>/ /解決策: 参照渡しのパラメーターを値渡しのパラメーターに変更します。 <br>function createArray() { <br>var arr = new Array() <br>for (var i = 0; i arr[i] = function (num) { <br>return function () { <br>return num; <br>} <br>} (i);// この匿名関数を呼び出して内部を返します匿名関数、ここではパラメータを値で渡すための追加の手順を示します。 <br>return arr; <br>} <br>var funcs = createArray(); (var i = 0; i < funcs.length ; i ) { <br>alert(funcs[i]() "<br />"); <br>} <br>//上記の出力は理想的な結果です<br></スクリプト><br><br> </div>