javascript - 定时器 匿名函数的问题
高洛峰
高洛峰 2017-05-19 10:36:56
0
3
445
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 的函数要求, 会一直执行下去

某草草

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板