JS定時器只執行一次的原因


今天在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); //第一個參數是函數

貼出來希望大家引以為鑒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM