我有C++和Java背景。我在使用JavaScript调用函数调用时遇到了一些麻烦。JavaScript范围和函数调用
以下是我的代码示例,我声明变量lon和lat#4。并在#5和#6行上赋值。
这是我的问题,我打电话给#1上的writeToTes(),它工作。但是,当我在#2或#3上放置writeToTes()时,lon和lat是空的,就像它从未分配过的一样。这是为什么?
根据我的逻辑,我们已经执行,如果(navigator.geolocation){},lat和lon应该已经分配,为什么当我调用writeToTes()lon并且lat仍然是空的。
var lon = '',
lat = ''; // #4
$(document).ready(function() {
setLonLat();
});
function setLonLat() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
lat = (position.coords.latitude); //#5
lon = (position.coords.longitude); //#6
writeToTes(); //#place it Here #1
});
//#place it Here #2
}
//#place it Here #3
}
function writeToTes() {
$("#tes").html(lon + " " + lat);
}
这是因为异步性,这就是为什么你传递回调函数 - 当收到结果时调用它。如果将变量放置在回调处理程序之外,您会在分配东西之前看到它处于状态 – baao