與空初始化後,我發現這段代碼在這裏:https://www.pubnub.com/blog/2015-04-30-google-maps-geolocation-tracking-in-realtime-with-javascript/檢查值的變量在JavaScript
而我的第一個想法是:程序員一定是搞錯了。
但我的第二個想法是:嗯,這是JavaScript的,之前讓我吃驚......
怎麼可能爲變量locationMarker不被空?或者它是不合邏輯的「安全失效」?
與空初始化後,我發現這段代碼在這裏:https://www.pubnub.com/blog/2015-04-30-google-maps-geolocation-tracking-in-realtime-with-javascript/檢查值的變量在JavaScript
而我的第一個想法是:程序員一定是搞錯了。
但我的第二個想法是:嗯,這是JavaScript的,之前讓我吃驚......
怎麼可能爲變量locationMarker不被空?或者它是不合邏輯的「安全失效」?
// Get the location of the user's browser using the native geolocation service.
navigator.geolocation.getCurrentPosition(
function (position) {
// Check to see if there is already a location. There is a bug in FireFox where this gets invoked more than once with a cached result.
if (locationMarker){
return;
}
Firefox有一個錯誤,如果位置不爲空,顯然將無法設置位置。這包括更新位置。這可能是不相關的任何更長的時間,但它2011年
期間顯然在Firefox的問題,我發現這裏的意見解決了這個文章:從用戶heriyanto
我終於找到了錯誤,當我打開Firebug控制檯上,那就說明我說的 updateMarker函數執行時標記爲空的錯誤,所以我試着改變updateMarker 與
locationMarker = addMarker(position.coords.latitude, position.coords.longitude,「Newer Position」);
和瀏覽器最後顯示我的當前位置,我不知道爲什麼 Firefox的失敗,使「初始位置」這樣locationMarker變量 還是空的,所以當updateMarker執行控制檯返回 錯誤。
我會說,嘗試沒有這個代碼。誠然,沒有合乎邏輯的理由來檢查變量是否爲空,除非在不太可能存在需要它的錯誤的情況下。我敢說這個bug在5年後可能會修復,但你永遠不知道!
你可以擴展你的答案嗎?答案應該工作,即使他們的鏈接斷了,這個可以使用很多改進 –
在你的鏈接變量聲明在navigator.geolocation.getCurrentPosition之外,這樣纔有意義,但在我的例子中只是一個局部變量,它應該是null如果它被調用兩次,對嗎? –
這只是不必要的代碼,在該博客的例子。忽略它。 –
不是,'locationMarker'將爲空,但如註釋所示,如果由於某種原因它不爲空,這似乎不太可能,請儘快到最近的出口並返回。當然,該代碼示例也嘗試從異步方法返回,這是不可能的,所以可能只是開發人員完全沒用。 – adeneo
可能使用閉包(某處)。不過,我認爲這段代碼沒有意義。 –