<script>
function add(num)
{
return function(toadd)
{
return num+toadd;
}
}
var addfive=add(5);
alert(addfive(2));
</script>
谁能就解释一下啊,为什么输出结果是7,运行流程是什么???

解决方案 »

  1.   

      var addfive=add(5);
    调用add函数是返回一个函数
    变成
    var addfive = function(toadd)
    {
    return 5+toadd

    var v = addfive(2)
    结果不就是7吗
      

  2.   

    那是说addfive()也是一个函数
      

  3.   

    就象一楼所说。这种时候,外部的add(num)里的参数num对于里面返回的return function(toadd)来说,等于成了数值常量。
      

  4.   

    这是最典型的闭包的问题。结果为7不重要,重要的是JS的作用域是以函数划分的。
    当var addfive=add(5);之后,函数add已经执行完了,那为什么后面的方法还能使用add的参数进行计算呢?
    呵呵。