关于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方法执行函数失效

function say(){ alert("sss") } setInterval(say(),2000);这么写函数setInterval将直接执行say()函数,应该讲代码改为funct...

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

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

Java 自定义方法

spring mvc 自定义方法拦截器

自定义方法拦截器   @interface 属于annotation 注解 import java.lang.annotation.ElementType; import java.lang.ann...

datagrid 基本添加行,删除行,插入行,自定义方法

一、需要引入的文件 二、代码详解 /* 允许编辑单元格 */ $('#contentTable').datagrid().datagrid('enableCellEditing'); /*...

资源变量定义方法

  • 2014-03-18 14:18
  • 610KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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