<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 < 10; i ) { <BR>arr[i] = function () { <BR>return i; <BR>} <BR>} <BR>return arr; <BR>} <BR>var funcs = createArray() <BR>for (var i = 0; i < funcs.length; 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 < 10; i ) { <BR>arr[i] = function (num) { <BR>return function () { <BR>return num; <BR>} <BR>} (i);//내부를 반환하려면 이 익명 함수를 호출하세요. 익명 함수, 여기에 값으로 매개변수를 전달하는 추가 단계가 있습니다. <BR>return arr <BR>} <BR>var funcs = createArray() <BR>for (var i = 0; i < funcs.length ; i ) { <BR>alert(funcs[i]() "<br />") <br>} <br>//위 출력은 이상적인 결과입니다<br></ 스크립트> <br><br> </div>