我只是想了解这段代码发生了什么,我深入研究了嵌套函数和更高阶的主题,以及return语句。但是我仍然希望结束这种怀疑(不确定连续两个回复陈述),这导致我在这里需要帮助以便我理解,以及所有适用的东西。
function higher_order(){
return function addNum()
{
return 1+1;
return function subNum()
{
return 1-1;
};
};
};
alert(higher_order()()());
答案 0 :(得分:5)
问题是该函数在第一个return语句后停止运行;您的higher_order
会返回函数addNum
,该函数返回数字2;这是不可调用的,并且异常发生在第3个括号()
higher_order()
返回函数addNum()
addNum()
返回2号2
(higher_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)
返回的值