高阶函数调用行为非常混乱

时间:2017-11-26 02:43:04

标签: javascript function functional-programming higher-order-functions

我试图在一个函数中调用一个函数并不是什么大问题,但由于某些原因我不明白为什么我不能通过这个逻辑调用一个函数:

function func1(futurefunc){
  futurefunc();
}

function func2(){
  return 3+3;
}

func(func2);

现在上面代码的结果是未定义的。但是当我放置:func(alert)时,会调用alert参数。我不明白为什么第二种情况正在运行,第一部分没有打印返回值,在这种情况下是6。

但是当我尝试以下内容时:

function func1(futurefunc){
  return futurefunc();
}

代码似乎提供了正确的值,在这种情况下为6。任何明确的解释。我希望我没有遗漏任何东西。

1 个答案:

答案 0 :(得分:0)

第一种情况,func1只调用futurefunc()而不return,所以打印undefined

当您通过时,会调用警报,警报,然后您会看到对话框。

第二种情况,func1调用futurefunc并返回其结果,因此打印出6。

这里没有什么难以理解的。