我收到了以下代码:
navigator.geolocation.getCurrentPosition(
successFunction
);
我想知道为什么不要求使用'()'在succesFunction结束时?是不是需要使用'()'来调用函数? - > somefunction() 它背后的逻辑是什么?
答案 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"