今天在JS做特效的時候,突然發現一個定時器總是只執行一次,后面就不再執行了。
先貼原代碼:
1 var i=1; 2 var fun1=function(){ 3 console.log(i++); 4 } 5 var timer = setInterval(fun1(),1000);
后來經過試驗,找到了原因,第五行代碼中,setInterval方法的第一個參數,我給的是fun1(),相當於(function(){})() ,即執行某匿名函數。所以我給的是一個執行語句而不是需要給定的一個函數。
當執行到第五局那一行時,定時器去讀取給入的第一個參數,由於是執行語句,所以JS先將此語句執行,即控制台輸出i++。確定沒有接收到函數,定時器停止執行
修改代碼如下:
1 var i=1; 2 var fun1=function(){ 3 console.log(i++); 4 } 5 var timer = setInterval(fun1,1000); //第一個參數是函數
貼出來希望大家引以為鑒