function C(){
return function(){
alert("警告");
}
}
function test(){
this.A=function(){
var a=C();
setTimeout(a,3000);//这个有弹出“警告”(1)
setTimeout("a()",3000);//这个没有弹出“警告” 报错“a is not defined” (2)
setTimeout("d()",3000);//这个有弹出 问题是“上面的没有弹出,下面的有弹出,都是方法函数啊”
}
}var T=new test();
T.A();
其实最主要的问题是(2)的写法为什么会报错,我习惯(2)的写法。先谢谢大侠,求赐教
return function(){
alert("警告");
}
}
function test(){
this.A=function(){
var a=C();
setTimeout(a,3000);//这个有弹出“警告”(1)
setTimeout("a()",3000);//这个没有弹出“警告” 报错“a is not defined” (2)
setTimeout("d()",3000);//这个有弹出 问题是“上面的没有弹出,下面的有弹出,都是方法函数啊”
}
}var T=new test();
T.A();
其实最主要的问题是(2)的写法为什么会报错,我习惯(2)的写法。先谢谢大侠,求赐教
var a=C();
window.a=C();加这一句,(2)就行了。
第二个,为string,会在全局环境下评估这个string。而全局环境下没有a这个function,所以会报错。
(2) setTimeout到运行时, a早就不存在了.
----------<script>
function C(){
return function(){
alert("警告");
}
}
function test(){
this.f;
this.A=function(){
var a=C();
this.f = a
setTimeout("C()()",3000);
setTimeout("T.f()",3000);
}
}
var T=new test();
T.A();</script>