关于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传统代码当中,无法在一个方法中引用另一个方法中的局部变量同样道理?


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


setInterval设置停止和循环

setInterval 不同于setTimeout,setInterval会无限反复执行,如果要让setInterval停止执行该怎么做呢? 只需要把setInterval()赋值给一个变量,然...
  • life169
  • life169
  • 2016年08月08日 08:01
  • 7522

画图时 内存不停 增长 的解决 CreateCompatibleDC(NULL) 创建失败

今天做贪食蛇的时候,当吃了几个食物的时候,系统报错,我是在group上画图,蛇头,蛇尾,蛇身,三张位图。 CreateCompatibleDC(NULL) 创建失败,网上查了原因,应该是内存不足引起的...

用C++实现一个多进程回显服务器

用C++实现一个多进程回显服务器       本案例将用多进程实现一个基于Linux使用C++实现的C/S网络程序:客户端从终端输入,然后借助服务端回显。进而观察TCP的状态转换图,发现多进程网络编程...

Java 自定义方法

  • 2017年04月22日 14:13
  • 8KB
  • 下载

APP 开发问题模型的定义方法。

  • 2015年12月06日 10:41
  • 1.29MB
  • 下载

hadoop2.x常用端口及定义方法

端口 Hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问。而随着Hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,...

创建系统变量配置的宏定义方法

  • 2015年01月12日 14:44
  • 316B
  • 下载

c# 定义方法实现元素交换的排序

  • 2013年10月06日 10:16
  • 902B
  • 下载

在vue2.0中父组件如何触发子组件的自定义方法?

如果我在父组件的button上绑定了click事件,我想当点击button时可以触发子组件(单文件的子组件xx.vue)的某个方法(如fn1),要这样的效果该怎样实现?之前看了vue1的文档实例里面有...

资源变量定义方法

  • 2014年03月18日 14:18
  • 610KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于setInterval方法中function的定义方法
举报原因:
原因补充:

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