function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i]=function(){ return i; } } return arr; } var b = box(); console.log(b.length); for(var i=0;i<b.length;i++){ console.log(b[i]()) }
위 코드는 5 5 를 출력합니다
b[i]()가 익명 함수를 호출하지만 익명 함수는 자체적으로 실행되지 않으므로 호출 시 box( ) 실행되었습니다. . . .
다음 변경:
function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i]=( function(num){ console.log("ccc="+num) return num; } )(i) } return arr; } var b = box(); console.log(b.length); for(var i=0;i<b.length;i++){ console.log(b[i]) }
실행 결과:
num=0 num=1 num=2 num=3 num=4 5 0 1 2 3 4
수정 후 익명 함수가 자체적으로 실행되어 b[i]가 최종 반환됩니다. 더 이상 함수가 아닙니다