我正在教自己javascript,我尝试过的其中一个练习对我来说毫无意义。
在下面的代码中,'position'是必须定义的参数。但是,当我将函数displayLocation
作为参数传递给navigator.geolocation.getCurrentPosition
时,代码执行完美,尽管没有传递任何参数。当我在没有coords.longitude
参数的控制台中尝试position
时,它不起作用。
如果没有定义的参数,代码如何工作?
function displayLocation(position)
{
var latitude = latitude.coords.latitude;
var longitude = position.coords.longitude;
var div = document.getElementById("location");
div.innerHTML = latitude + " " + longitude;
}
navigator.geolocation.getCurrentPosition(displayLocation);
答案 0 :(得分:0)
当我在没有位置的控制台中尝试coords.longitude时 论证,它不起作用......
如果没有定义的参数,代码如何工作?
JavaScript中的函数参数是可选的
如果您未通过它,则其值为undefined
。
所以,是的,函数接受缺少参数position
的调用,但position.coords
将不可用。
答案 1 :(得分:0)
navigator.geolocation.getCurrentPosition(displayLocation);
使用Position
的实例调用您的函数,记录为here。
请注意,displayLocation
不是立即调用,而是延迟调用。这就是您将其作为回调函数传递的原因。
答案 2 :(得分:0)
当你做什么时
navigator.geolocation.getCurrentPosition(displayLocation);
是您正在调用navigator.geolocation.getCurrentPosition
,并为其提供函数displayLocation
的句柄。你不能说没有参数就会调用displayLocation
。这取决于getCurrentPosition
对该句柄的作用。它的作用是创建一个位置对象,然后调用你给它的函数,并将该对象作为参数。更简洁,getCurrentPosition
调用displayLocation
作为参数创建了一个位置对象。
答案 3 :(得分:0)
让我们来看看Geolocation.getCurrentPosition。必需参数success
是回调函数。
Geolocation.getCurrentPosition(displayLocation)
的内部工作方式大致如下:
function getCurrentPosition(callback, ...){
var positionGCP;
...
...
positionGCP = *someposition*;
// done getting current position
callback(positionGCP)
//passed in function gets called back!
}
,最后一行(callback(positionGCP)
)自displayLocation(positionGCP)
起真正运行callback == displayLocation
。
这有意义吗?
以下链接可能有所帮助: Passing parameters to a callback function