function makeIncrementer() {
    return function(x) { return x + 1; };
}
var inc = makeIncrementer();
// displays 8
alert(inc(7));明明inc没参数,后面的x怎么理解

解决方案 »

  1.   

    makeIncrementer返回匿名函数,此函数接收一个参数且返回此参与与1的和
      

  2.   

    正解。每个函数都包含一个argument的参数。
      

  3.   

    有点理解了,我以为调用makeIncrementer(4) 就会返回5,
    实际上返回function(x) { return x + 1; }返回这个函数又有什么用呢?还是不明白得很。
      

  4.   

    var inc = makeIncrementer(); 
    这个相当于var inc = function(x) { return x + 1; }; 
    inc(7);
    返回8,应该很清楚了。
      

  5.   

    说句俗话,这个 function 是“脱了裤子放屁”——多此一举!return function(x) { return x + 1; };
    这句话会返回一个匿名函数的句柄(引用),
    var inc = makeIncrementer();
    这样赋值以后,inc 就获得匿名函数的句柄(引用),也可以理解为 inc 就是匿名函数的函数名了,
    inc 加上括号 () 就可以执行匿名函数了。js 可以这么用,可是 lz 的例子显得很多于,直接调用就可以了!
    function increase(x) { 
        return x + 1;

    // displays 8 
    alert(increase(7));
      

  6.   

    这是JavaScript里的闭包问题,楼主搜一篇教程看一下自然就明白了