为什么在成功函数结束时不需要有'()'?



我得到了以下代码:

navigator.geolocation.getCurrentPosition(
  successFunction
);

我想知道为什么不需要在成功函数的末尾使用"()"?不是需要用"()"调用函数吗 --> somefunction()这背后的逻辑是什么?

因为您传递的是函数引用,而不是函数的返回值。

函数是可以调用的东西 - 它运行代码并返回结果。使用括号调用函数。但是,如果你想谈论这件事,如果你想传递函数以便其他人可以调用它,你省略括号。

在这种情况下,getCurrentPosition()函数要求您为其提供一个函数,以便它以后可以调用它。因此,您不是调用 successFunction,而是传递对它的引用。

如果你改为写:

navigator.geolocation.getCurrentPosition(
  successFunction()
);

。然后会发生什么successFunction()将被调用 - 函数的代码将被运行,并可能返回一个值 - 然后您将调用getCurrentPosition(),将返回的任何值作为参数传递successFunction

在 JavaScript 中,您可以将函数作为对象传递:

尝试执行此示例:

function myFunction() {
    console.log('hello');
}
function anotherFunction(functionParameter) {
    console.log('executing function passed as argument:');
    functionParameter();
}
anotherFunction(myFunction);

此代码将打印:

"executing function passed as argument:"
"hello"

最新更新