이 코드는 예상 0에서 9 대신 10 10을 출력합니다. 폐쇄에 i에 대한 참조가 있기 때문에 함수가 실행되면 10이되었습니다.
함수 f1 () {for (var i = 0; i <10; i ++) {settimeout (function () {alert (i);}, 1000);}} f1 ();위의 문제를 해결하기 위해 자체 실행 된 익명 기능을 사용할 수 있습니다.
함수 f2 () {for (var i = 0; i <10; i ++) {(function (e) {settimeout (function () {alert (alert (e);}, 1000);} (i);}} f2 ();여기서 익명 함수는 i를 매개 변수로 간주하고 여기에 e는 i의 사본을 가지고 있으며, 참조는 e에 대한 참조이며 위의 문제를 피합니다.