我有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