【问题标题】:Uncaught TypeError: number is not a function未捕获的类型错误:数字不是函数
【发布时间】:2014-07-14 14:35:57
【问题描述】:

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

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

【问题讨论】:

  • 当你看到两个这样的返回时,仔细想想,如果函数返回1+1,它怎么应该也返回一个函数?

标签: javascript typeerror nested-function return


【解决方案1】:

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

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

你可以试试alert(higher_order()()) 看看第三次调用的值是多少。

【讨论】:

    【解决方案2】:

    //试试这个方法:

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

    higher_order() // 返回函数 addNum

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 2022-11-19
      • 1970-01-01
      • 2019-06-06
      • 2019-05-24
      • 2021-12-15
      相关资源
      最近更新 更多