问两段程序!!
1.
var name="The widow";
var object={
name:"my object";
getNameFunc:function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());
问:为什么alert(object.getNameFunc()());中getNameFunc后是两个括号????
——————————————————————————————————————————————————————
2.function createFunctions(){
var result=new Array();
for(var i=0;i<10;i++){
result[i]=function(num){
return function(){
return num;
};
}(i);//*A*
}
return result;
}
var funcs=createFunctions();
for(var i=0;i<funcs.length;i++){
document.write(funcs[i]()+"<br/>");
}
问:为什么*A*前有个(i),我知道那个是传给内部匿名函数的参数(形参是num那个),但是为什么是在哪里而不是调用的时候传参数呢?就是为什么不是document.write(funcs[i](为什么不是在这里传参数???)+'<br/>")
------解决方案--------------------第一点.因为getNameFunc本身是一个function,执行后中返回的是一个函数,若不加括号,则返回的只是函数的内容,并没有执行此函数
(第一点中你写法也有问题,用","分隔)
------解决方案--------------------第二个问题:
JScript code
result[i]=function(num){
return function(){
return num;
};
}(i)
------解决方案--------------------
存的是声明,执行应该是result[i]();