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

时间:2016-02-02 19:35:16

标签: javascript

我收到了以下代码:

navigator.geolocation.getCurrentPosition(
  successFunction
);

我想知道为什么不要求使用'()'在succesFunction结束时?是不是需要使用'()'来调用函数? - > somefunction() 它背后的逻辑是什么?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

一个函数是一个可以调用的 thing - 它运行代码并返回结果。您可以使用括号调用函数。但是,如果你想谈论这个问题,如果你想传递这个函数以便其他人可以调用它,你就不用括号了。

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

如果您改为写道:

navigator.geolocation.getCurrentPosition(
  successFunction()
);

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

答案 2 :(得分:0)

在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"