setInterval()由於作用域問題找不到呼叫函式報錯

螞蟻小編發表於2017-03-25

在使用setInterval()函式的時候,可能會出現找不到呼叫函式的情況,這種情況多數存在於setInterval()函式第一個引數帶有引號的情況下,如下格式:

[JavaScript] 純文字檢視 複製程式碼
setInterval("func()",1000);

下面介紹一下導致此錯誤出現的最可能的原因,先看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
function func(){
  function done(){
    console.log("螞蟻部落");
  }
  setInterval("done()",1000);
}
func();

上面的程式碼會報函式done沒有定義的錯誤,出現這種狀況的原因是setInterval()函式帶引號的時候,總會在全域性作用域查詢,所以上面的程式碼會出現找不到函式done的情況,這種情況對於setTimeout()函式也是適用的。


相關文章