suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Problem mit der anonymen Timerfunktion

var a = 0;
function fn(){
    ssss.call(null,a)
    // 为什么 定时器里面的匿名函数加上字符串跟直接执行不同???
    setInterval("ssss()", 1000);    
    setInterval(ssss(), 1000);
}
function ssss(){
    console.log(++a)
}
fn();

Bitte bitten Sie den Meister, das Prinzip dahinter zu erklären

高洛峰高洛峰2805 Tage vor456

Antworte allen(3)Ich werde antworten

  • 阿神

    阿神2017-05-19 10:38:56

    setInterval第一个参数接受字符串,会把字符串解析成函数语句执行。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:38:56

    首先我们看下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 的函数要求, 会一直执行下去

    Antwort
    0
  • 某草草

    某草草2017-05-19 10:38:56

    不加双引号的话,就要去掉圆括号,只写函数名

    Antwort
    0
  • StornierenAntwort