2015-06-22 148 views
-2

我試圖將函數範圍外的位置值存儲起來。 HTML5地理定位API是我所需要的。這裏是我的代碼:JavaScript:未定義的變量錯誤

var location={}; 
navigator.geolocation.getCurrentPosition(function maPosition(position) { 

      location.latitude = position.coords.latitude; 
      location.longitude = position.coords.longitude; 
    }); 

console.log(position.latitude); 
console.log(position.longitude); 

當我運行這個,我得到錯誤variable undefined。這是由於它可能無法在maPosition的範圍內提供。由於我是JavaScript的新手,我想知道圍繞它的方式。我如何在position.coords的價值範圍之外訪問它的價值?誰能幫忙?

+0

最後2行'console.log(position.latitude); console.log(position.longitude);' – skip87

回答

1

position變量傳遞給getCurrentPosition中的回調函數。這只是該函數內部可用

嘗試:

var location={}; 
navigator.geolocation.getCurrentPosition(function maPosition(position) { 

     location.latitude = position.coords.latitude; 
     location.longitude = position.coords.longitude; 
     console.log(position.latitude); 
     console.log(position.longitude); 
     // or you could call another function and pass the value 
     //someFunction(position): 
}); 

的地理定位服務的調用是ASYC,所以如果你想使用的position的價值,你需要可以做到在回調或傳遞到另一個功能。

+1

這不是我想要做的。 im'試圖從控制檯日誌的範圍中獲取值以顯示它不工作。但是謝謝你! – skip87

+0

當你記錄日誌時,它仍然需要讀取'location。*',否則它會記錄未定義的 – m90

+1

,你會從我的回答中看到,調用是asyc,你需要使用函數內部的值或者將它傳遞給另一個功能處理 – atmd