关于setInterval方法中function的定义方法

原创 2015年11月18日 11:22:31

使用window对象的setInterval方法,作为第一个参数传递的function必须在全局作用域中定义,否则会出现报错而无法执行。

具体如下:

在下面的代码中,试用jQuery方式在回调函数中使用window对象的setInterval方法,尝试实现每隔1秒重复执行func1()方法。

浏览器运行后报错:

报错显示调用的func1没有被定义。

原因分析:
    大前提:window对象的setInterval要求传递的方法参数必须是全局作用域的
  • func1 采用的方法定义格式, function 方法名(){...},这种方法只存在于局部作用域中。即只在回调函数中有效。
  • 而func2的定义方法,即方法名 = function(){...},在这种定义方法中方法名的前面不能加var,否则一样无效。因为加了var之后,相当于将这个方法定义成了回调函数当中的一个局部变量。而没有var修饰的情况,则相当于定义了一个全局变量,所以面向全局作用域有效。
  • 而func3的书写格式与func1一样,但由于写在回调函数之外的脚本当中,即面向整个script脚本,所以也就相当于在全局作用域中有效。

window对象存在于全局当中,而非回调函数局部当中。和java传统代码当中,无法在一个方法中引用另一个方法中的局部变量同样道理?


只要在路上,那么就终会成为大牛!


javascript 定时器. setInterval 用法

工作上需要一个报表  差不多两分钟后刷新一次.  用javascript的定时器.可以自动调用函数  详细如下:   1、obj=setTimeout("函数名",时间) 定时器,只调用一次;...
  • jochzhu
  • jochzhu
  • 2011年09月05日 10:58
  • 16425

JavaScript中setInterval函数应用常见问题之一(第一个参数不加引号与加引号的区别)

http://www.cnblogs.com/bluescreen/archive/2013/05/19/3086399.html?utm_source=tuicool   学过JavaSc...
  • u010857476
  • u010857476
  • 2015年08月07日 09:58
  • 725

setTimeout()间歇调用和 setInterval()超时调用

JavaScript是单线程语言,但它允许通过设置超时值和间歇时间来调度代码在特定的时刻执行。前者是在指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码。         超时调用需...
  • zyz511919766
  • zyz511919766
  • 2012年03月07日 15:59
  • 3242

setTimeout、setInterval调用函数要与不要双引号的区别

js中setTimeout、setInterval调用函数要与不要双引号的区别
  • shuaicihai
  • shuaicihai
  • 2016年11月30日 01:10
  • 1441

js中clearInterval无效,以及setInterval中断后重新执行

clearInterval()失效的原因:setInterval()每执行一次,则返回一个唯一id。所以setInterval()执行了n次,那么需要调用clearInterval()也是nci。出现...
  • manmanwei
  • manmanwei
  • 2016年07月05日 19:03
  • 9418

javascrip setInterval 函数在一个对象内部的调用问题

最近改进了一下以前写的多幅图片轮流切换展示的代码,以前只是以类的方式整合到了dojo,并且在使用时必须显式调用window.setInterval方法。这样有下面两个缺点:1 需要指定各个存放显示数据...
  • haofeng82
  • haofeng82
  • 2008年01月22日 09:22
  • 1562

如何在一个页面使多个setInterval函数正常运行

var firstInterval; var secondInterval; function firstAlert(){ if(firstInterval) clearInterval(firs...
  • XYM8xym
  • XYM8xym
  • 2014年06月02日 22:09
  • 2860

window.setInterval的用法与实例

window.setInterval() 功能:按照指定的周期(以毫秒计)来调用函数或计算表达式。 语法:setInterval(code,millisec)   解释:code:在定时时间到时要执行...
  • CYZERO
  • CYZERO
  • 2015年01月04日 17:29
  • 25457

JavaScript setInterval方法执行函数失效

function say(){ alert("sss") } setInterval(say(),2000);这么写函数setInterval将直接执行say()函数,应该讲代码改为funct...
  • sinat_27790827
  • sinat_27790827
  • 2016年05月04日 10:56
  • 593

setInterval()函数使用

调用无参方法:     var test = function() {         document.body.innerHTML = new Date();      }     1、s...
  • ld422586546
  • ld422586546
  • 2013年06月05日 22:01
  • 546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于setInterval方法中function的定义方法
举报原因:
原因补充:

(最多只允许输入30个字)