1. 程式人生 > >js 匿名函式和閉包函式

js 匿名函式和閉包函式

例子:

function checkClosure(){

for(var i=0;i<3;i++){

setTimeout(function(){

alert(i);

},2000);

}

}

 checkClosure();

仔細想一想這個函式的執行結果是什麼輸出0,1,2?

其實只是2,2,2而已,這是因為for迴圈很快,當兩秒後i的值已經是2了,那如何輸出0,1,2那?

那我們用到了匿名函式和閉包了

function checkClosure(){

for(var i=0;i<3;i++){

setTimeout(

(function(){

alert(i);

})(i),2000);

}

}

但函式執行到setTimeout時候函式立即執行,就會輸出當前i 的值了