function f1(){
var n=999;
nAdd = function(){ n+=1 }
function f2(){
alert(n);
}
return f2;
}
var result = f1();
result();
nAdd();
result();
为什么nAdd()不会执行呢?

解决方案 »

  1.   

    还有个问题..
    关于JS的函数指针? 
    function f1(){
        n=999;
        function f2(){
            alert(n);
        }
        return f2;
    }
    f1();
    以上代码为什么不能执行;?
    为什么f1()还要加个指针呢?
    var c = f1();
    c();
    这样才可以
      

  2.   

    F1()一样运行了。只不过没运行F2()。因为F2是返回的。。又没赋值所以看不到。。
    <script>function f1(){
        var n=999;
        nAdd = function(){ n+=1 }
    alert(n);
        function f2(){
            alert(n);
        }
        return f2;
    }
    f1();
    nAdd();
    f1();
    </script>
    由于这个时候nAdd()运行的是另外一个指定的N。。所以这样N没有递增
      

  3.   


    其实都已经执行了。各函数作用如下:
    result();//结果输出999
    nADD();//结果让N+1,也就是让N=1000
    result();//再次输出N值,此时N=1000,所以结果输出1000。
    3个函数里只有2个有输出,只是感觉起来好象只有2个函数起作用而已!跟闭包的概念差得好远。呵呵!
      

  4.   

    这个跟指针也没什么关系,是函数定义和执行的区别,return f2;只是返回这个定义,但是没有执行,如果你把最后一个f1()改为(f1())();那就可以执行了,或者把return f2;改为return f2();返回即开始执行,那么效果就出来了。