JS种setInterval和setTimeout中参数括号的问题

1、问题描述:
上一次用定时器时第一个参数加不加()结果不同
2.定时器用法
js 定时器有以下两个方法:

setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
setTimeout() :在指定的毫秒数后调用函数或计算表达式。
语法

setInterval(code,millisec,lang)

参数 描述
code 必需。要调用的函数或要执行的代码串。
millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。
lang 可选。 JScript

setTimeout(code,millisec,lang)

参数 描述
code 必需。要调用的函数或要执行的代码串。
millisec 必需。在执行代码前需等待的毫秒数。
lang 可选。 JScript

由第一个参数描述的是,调用的函数执行的代码串
一般我们在写的时候会这样写

  setInterval(Test(),1);
  //这样是不对的

实际上这里的Test()很明显是在执行Test函数,传入的是函数执行的结果.如果我们没有定义返回值的话,就相当于没有什么也没有传入。而定时器是结合函数引用来调度的,因此不带括号,或者写成字符串形式
3.定时器的正确用法

//1.传入函数名,不加括号和引号
setInterval(Test,1000)
//2.传入匿名函数
setInterval(function(){
,1000)
//3.传入字符串,需要加括号
setInterval("Test()",1000)

第三种方法会在全局作用域下查找函数,有时会产生一些问题,所以一般推荐使用前2种方法。

上一篇:【js】setInterval是个坑!chrome定时截图保存实现


下一篇:js定时器