日期:2014-05-16  浏览次数:20320 次

问两段程序!!
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]();