gpt4 book ai didi

javascript - 为什么这个函数调用会破坏程序并导致 undefined variable ?

转载 作者:行者123 更新时间:2023-12-02 19:22:40 24 4
gpt4 key购买 nike

function getLatLng(address) {
geocoder.geocode({
'address' : address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
alert("Aus getLatLng: adresse:"+address+"Ergebnis: "+results[0].geometry.location);
return results[0].geometry.location;
} else {
alert("Geocode was not successful for the following reason: "
+ status);
}
});
}

我在另一个函数中使用这个 javascript 函数来从地址字符串中获取纬度/经度值。警报显示转换成功,但如果我调用该方法,我会收到一个 JavaScript 错误,表明它仍然未定义。

    var start = document.getElementById("route_start").value;
start = getLatLng(start);
alert("Start: "+start);

我错过了什么?警报始终显示 undefined variable 。这是为什么?我尝试了一切。一切都很顺利,直到我调用函数 getLatLng。返回的某些东西不起作用。 :(

最佳答案

您的 getLatLng 函数实际上不会返回任何内容,这就是 start 未定义的原因。

您编写的 return 语句包含在传递给 geocoder.geocode 的匿名函数中,因此实际上不会从外部函数返回。

由于 geocoder.geocode 是异步的,您将无法编写以这种方式返回结果的 getLatLng ,而是需要传递一个回调函数参数并在地理编码 API 返回值时调用此函数,例如:

function getLatLng(address, callback) {
geocoder.geocode({
'address' : address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
callback(results[0].geometry.location);
} else {
alert("Geocode was not successful for the following reason: "
+ status);
}
});
}

关于javascript - 为什么这个函数调用会破坏程序并导致 undefined variable ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com