首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

匿名函数中使用setTimeout有关问题

2012-03-25 
匿名函数中使用setTimeout问题一直对闭包,匿名函数之类的搞不清楚,今天本来想用匿名函数封装个方法的,碰到

匿名函数中使用setTimeout问题
一直对闭包,匿名函数之类的搞不清楚,今天本来想用匿名函数封装个方法的,碰到一个问题,请教各位大侠

想要实现的效果:每隔两秒输出 fn1;

代码:

JScript code
(function(){      var fn1 = function(){        console.log("fn1")        setTimeout("fn1()",2000);      },      fn2 = function(){       console.log("fn2")       setTimeout("fn1()",2000)    }    fn2();})()


这个如果我把(function(){})()去掉的话,就没问题了。

不然的话,就会 输出一个 fn2,再报错 :fn1 is not defined。

我是觉得我是错在闭包理解上,求通熟易懂的解释!
或者能够在 (function(){})() 里实现这个功能。。




[解决办法]
JScript code
(function(){      var fn1 = function(){        console.log("fn1")        setTimeout(function(){ fn1(); }, 2000);      },      fn2 = function(){        console.log("fn2")        setTimeout(function(){ fn1(); }, 2000);    }    fn2();})()
[解决办法]
setTimeout(function(){ fn1(); }, 2000);//这个fn1()调用的是局部的fn1函数


setTimeout("fn1()",2000)//这个fn1()调用的是全局的fn1函数
不知道我说的对不对
[解决办法]
fn2 = function(){
console.log("fn2")
setTimeout("fn1()",2000) //这个时候调用fn1()时,fn1()已经被销毁,所以找不到~~~
}

热点排行