setInterval内参数为局部变量的解决方案

setInterval内参数为局部变量的解决方案

function load()
{
    var width=1;
    flag=setInterval(grow(width),1000);
}

function grow(width)
{
    alert(width);
}

如上,由于setInterval是window下的全局方法,而var width=1使得width为局部变量,所以导致setInterval(grow(width),1000)这种方式是无法顺利弹出正确的结果的,解决办法总结如下:

(1)讲var width=1;改为this.width=1,这个时候width成为全局变量(当然也可以直接把var width=1放到load()
函数外)论文网 

(2)拼字符串方法:flag=setInterval("grow("+width+")",1000);这个时候可以获得width的值,其实本人并不是很理解为什么这样可以。。。汗

(3)另外一种网上的方法:flag=setInterval(grow.call(null,width),1000);(用apply一样的),这个我更加不理解,求高人解释。。。

(4)还有没有其它的办法??????

(2)拼字符串方法:flag=setInterval("grow("+width+")",1000);这个时候可以获得width的值,其实本人并不是很理解为什么这样可以

这种方法很好啊,一般都这样的

g=grow(width);
在setInterval时g作为参数被传入,这就是一个闭包,通过g可以访问这个局部的变量,第二个是一样的原理,相当于把g匿名了。这就是跟下面这个例子一样:
function A(){
var a = 1;
function B(){
a++;
alert(a);
}
C(B);
}
function C(f){
f();
}
A();

  • 上一篇文章:
  • 下一篇文章: 没有了
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有