為了說明問題,代碼很短
<script>
var test = function(){ console.log('a') } timer1 = setInterval(test(), 1000) timer2 = setInterval(console.log('b'), 1000) </script>
上面的兩個定時器中都只執行了一次,並沒有重復執行。
解決方案一:
函數名不要叫括號
var test = function(){ console.log('a') } timer1 = setInterval(test, 1000)
解決方案二:
在執行的函數用引號括起來(里面使用單引號,則外面用雙引號)
var test = function(){ console.log('a') } timer1 = setInterval("test()", 1000) timer2 = setInterval("console.log('b')", 1000)
使用場景,當重復執行的函數需要傳入參數,傳入的參數有肯能隨時變動,可以用方案二的方法來解決。
var test = function(num){ console.log(num) } num = 10 timer1 = setInterval("test(num)", 1000) timer2 = setInterval(function(){num++}, 2000)
相當於下面的代碼
var test = function(num){ console.log(num) } num = 10 timer1 = setInterval(function(){test(num)}, 1000) timer2 = setInterval(function(){num++}, 2000)
可參考:https://blog.csdn.net/chenbetter1996/article/details/85267605