1

我只是想了解这段代码发生了什么,我深入研究了嵌套函数和高阶以及返回语句的主题。但我仍然想结束这个疑问(不确定连续两个返回语句),这导致我来到这里,需要帮助来理解我的理解,以及所有适用的。

function higher_order(){
  return function addNum()
  {  
    return 1+1;
    return function subNum()
    {
      return 1-1;
    };
  };
}; 
alert(higher_order()()());
4

2 回答 2

5

问题是函数在第一个 return 语句后停止运行;你higher_order返回函数addNum,它返回数字 2;这是不可调用的,异常发生在第三个括号()

  • higher_order()返回函数addNum()
  • addNum()返回数字 2
  • 2( higher_order()()) 不能作为函数调用,因此会出现异常。

您可能会尝试alert(higher_order()())查看用于第三次调用的值是什么。

于 2014-05-25T20:29:38.817 回答
1

// Try this way:

function higher_order(){
    return function addNum(){
        return function subNum(){
            return 1-1;
        };
    };
};

higher_order() // returns the function addNum

higher_order()() // returns the function subNum

higher_order()()() // returns the value returned from subNum (0)

于 2014-05-25T20:34:50.100 回答