1. 程式人生 > 實用技巧 >JavaScript定時器setInterval()只執行一次解決方法

JavaScript定時器setInterval()只執行一次解決方法

為了說明問題,程式碼很短

    <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