2016-10-10 66 views
0

與空初始化後,我發現這段代碼在這裏:https://www.pubnub.com/blog/2015-04-30-google-maps-geolocation-tracking-in-realtime-with-javascript/檢查值的變量在JavaScript

enter image description here

而我的第一個想法是:程序員一定是搞錯了。

但我的第二個想法是:嗯,這是JavaScript的,之前讓我吃驚......

怎麼可能爲變量locationMarker不被?或者它是不合邏輯的「安全失效」?

+3

不是,'locationMarker'將爲空,但如註釋所示,如果由於某種原因它不爲空,這似乎不太可能,請儘快到最近的出口並返回。當然,該代碼示例也嘗試從異步方法返回,這是不可能的,所以可能只是開發人員完全沒用。 – adeneo

+0

可能使用閉包(某處)。不過,我認爲這段代碼沒有意義。 –

回答

0
// 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

的評論是爲https://www.bennadel.com/blog/2023-geocoding-a-user-s-location-using-javascript-s-geolocation-api.htm如下:

我終於找到了錯誤,當我打開Firebug控制檯上,那就說明我說的 updateMarker函數執行時標記爲空的錯誤,所以我試着改變updateMarker 與

locationMarker = addMarker(position.coords.latitude, position.coords.longitude,「Newer Position」);

和瀏覽器最後顯示我的當前位置,我不知道爲什麼 Firefox的失敗,使「初始位置」這樣locationMarker變量 還是空的,所以當updateMarker執行控制檯返回 錯誤。

我會說,嘗試沒有這個代碼。誠然,沒有合乎邏輯的理由來檢查變量是否爲空,除非在不太可能存在需要它的錯誤的情況下。我敢說這個bug在5年後可能會修復,但你永遠不知道!

+0

你可以擴展你的答案嗎?答案應該工作,即使他們的鏈接斷了,這個可以使用很多改進 –

+0

在你的鏈接變量聲明在navigator.geolocation.getCurrentPosition之外,這樣纔有意義,但在我的例子中只是一個局部變量,它應該是null如果它被調用兩次,對嗎? –

+0

這只是不必要的代碼,在該博客的例子。忽略它。 –