javascript - 定時器 匿名函數的問題
高洛峰
高洛峰 2017-05-19 10:36:56
0
3
451
var a = 0;
function fn(){
    ssss.call(null,a)
    // 为什么 定时器里面的匿名函数加上字符串跟直接执行不同???
    setInterval("ssss()", 1000);    
    setInterval(ssss(), 1000);
}
function ssss(){
    console.log(++a)
}
fn();

請大神麻煩講解一下 裡面的原理

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(3)
阿神

setInterval第一個參數接受字串,會把字串解析成函數語句執行。

大家讲道理

首先我們看下W3C 的解釋setInterval

再看下

  1. setInterval("ssss()", 1000);

  2. setInterval(ssss(), 1000);

1.那麼執行的時候 就會報錯了;
2.函數本體 ssss()

function ssss(){
    console.log(++a)
}

是沒有回傳值的 , 但是 注意 在fn 函數中有一句 ssss.call(null,a) 那麼 在fn 函數中就存在了回傳值了。而且回傳值 剛好 還是個函數 , 因此 符合setInterval 的函數要求, 會一直執行下去

某草草

不加雙引號的話,就要去掉圓括號,只寫函數名稱

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板