关于setInterval方法中function的定义方法
使用window对象的setInterval方法,作为第一个参数传递的function必须在全局作用域中定义,否则会出现报错而无法执行。
具体如下:
在下面的代码中,试用jQuery方式在回调函数中使用window对象的setInterval方法,尝试实现每隔1秒重复执行func1()方法。
浏览器运行后报错:
报错显示调用的func1没有被定义。
原因分析:
大前提:window对象的setInterval要求传递的方法参数必须是全局作用域的
- func1 采用的方法定义格式, function 方法名(){...},这种方法只存在于局部作用域中。即只在回调函数中有效。
- 而func2的定义方法,即方法名 = function(){...},在这种定义方法中,方法名的前面不能加var,否则一样无效。因为加了var之后,相当于将这个方法定义成了回调函数当中的一个局部变量。而没有var修饰的情况,则相当于定义了一个全局变量,所以面向全局作用域有效。
-
而func3的书写格式与func1一样,但由于写在回调函数之外的脚本当中,即面向整个script脚本,所以也就相当于在全局作用域中有效。