未捕获的TypeError:数字不是函数

时间:2014-05-25 20:25:24

标签: javascript typeerror nested-function return

我只是想了解这段代码发生了什么,我深入研究了嵌套函数和更高阶的主题,以及return语句。但是我仍然希望结束这种怀疑(不确定连续两个回复陈述),这导致我在这里需要帮助以便我理解,以及所有适用的东西。

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

2 个答案:

答案 0 :(得分:5)

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

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

您可以尝试alert(higher_order()())查看第三次调用所用的值。

答案 1 :(得分:1)

//尝试这种方式:

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

higher_order()//返回函数addNum

higher_order()()//返回函数subNum

higher_order()()()//返回从subNum(0)

返回的值