function f1(){
    var n=999;
    nAdd=function(){n+=1}
    var f2=function (){
      alert(n+"ha");
    }
    return f2;
  }
  var result=f1();
  result(); // 999
  nAdd();
  result(); // 1000
不理解 f1() 里面的 return f2 到底返回的是什么东西,换成 return f2() 结果不一样

解决方案 »

  1.   

    这里f2和f2()当然不一样的 如果是返回发
    f2()返回执行,如果是返回f2的话就是饭后后面那个方法,简单说就是后面那段字符串,楼主在看闭包吧????
      

  2.   

    多写点实用的代码吧,我这些也是随着不断的熟悉javascript才了解的,只是了解归了解,实际用不着,实际如果代码写成这样,只是自找苦吃!
      

  3.   

    js的方法其实也是变量
    所以return f2就和return a  retunr b一样 可以由定义的变量来接受
    至于return f2()则是返回执行f2后由f2返回的值  你的f2里没return返回值 所以undefined
      

  4.   

    楼主确定var   result=f1(); 
      result();   //   999 
      nAdd(); 
      result();   //   1000 返回的是这两个答案?我看了不对,我也测试了,果然不对。999ha 1000ha
      

  5.   

    +1说的对,闭包有点像java中的封装那个概念吧。