匿名函数中使用setTimeout问题
一直对闭包,匿名函数之类的搞不清楚,今天本来想用匿名函数封装个方法的,碰到一个问题,请教各位大侠
想要实现的效果:每隔两秒输出 fn1;
代码:
(function(){ var fn1 = function(){ console.log("fn1") setTimeout("fn1()",2000); }, fn2 = function(){ console.log("fn2") setTimeout("fn1()",2000) } fn2();})()(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()已经被销毁,所以找不到~~~
}