【发布时间】:2018-05-09 14:32:27
【问题描述】:
我试图在一个没什么大不了的函数中调用一个函数,但由于某种原因,我不明白为什么我不能通过这个逻辑调用一个函数:
function func1(futurefunc){
futurefunc();
}
function func2(){
return 3+3;
}
func(func2);
现在上面代码的结果是未定义的。但是,当我输入:func(alert) 时,会调用警报参数。我不明白为什么第二种情况正在运行,而第一部分没有打印返回值,在这种情况下为 6。
但是当我尝试以下操作时:
function func1(futurefunc){
return futurefunc();
}
代码似乎提供了正确的值,在本例中为 6。任何明确的解释。我希望我没有遗漏任何东西。
【问题讨论】:
-
如果确实是您使用的语言,您应该添加一个 javascript 标签。函数调用语义取决于语言。
-
您不明白为什么您的第一个案例没有返回任何内容,即使您缺少
return语句?为什么会让人困惑? -
@Tomalak 由于括号而令人困惑,我认为它只需要调用函数参数,因此既然函数参数返回 3+3,那么我认为这将是返回值.我正在通过添加括号来学习调用函数,我猜我忘记了基础知识:)
-
感谢@Gene 的建议,我忘记了!
-
futurefunc()不会被return 3+3“取代”,如果你有这样的想法的话。它被6“替换”。所以结果值会在那里,但是JS函数不会自动返回值。
标签: javascript function functional-programming higher-order-functions