为了账号安全,请及时绑定邮箱和手机立即绑定

关于setTimeout()第一个参数很奇怪的地方?

关于setTimeout()第一个参数很奇怪的地方?

哔哔one 2019-02-26 12:15:00
var num = 0;var max = 10;(function incrementNumber(){    num++;    if (num <= max) {        console.log(num);        setTimeout(incrementNumber,500)        //setTimeout(incrementNumber(),500)    }    else{        console.log('done');    }})();谢谢各位,问题已解决: incrementNumber()直接调用函数,返回undefined,导致setTimeout失效,但是incrementNumber()函数仍然运行,所以最后直接输出,但是没有任何时间间隔当incrementNumber没有带括号的时候,运行正确,每隔500ms从1输出到10.为什么加上了括号之后incrementNumber(),运行后直接就把1到10输出来了,没有任何的间隔时间?我知道第一个参数应该是字符串或者函数(名),但为什么这里加上括号之后没有出错呢?(虽然运行结果并不符合预期)我的理解是最后一次性返回所有数字没有问题,但之前应该会有10*500ms总的等待时间?
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

incrementNumber()执行后没有返回值,相当于你在setTimeout中传一个空串呗,也不会报错啊。但是incrementNumber方法还是执行了的,而且是立即执行了,没有延迟。

查看完整回答
反对 回复 2019-03-03
  • 1 回答
  • 0 关注
  • 346 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信