2015-11-02 60 views
0

想象一下:你想用你在一個方法中接收到的XML元素做一些事情。所以你試試這個:哪裏可以報告Javascript錯誤?

function makeNiceThings(XMLDOM){ 
    if(XMLDOM.getElementsByTagName("err")){ 
     makeReallyNiceThings(XMLDOM.getElementsByTagName("err")[0].childNodes[0].nodeValue); 
    } 
} 

所以,Javascript告訴你你試圖從空引用中調用childNodes[0]。但是,如果你嘗試:

function makeNiceThings(XMLDOM){ 
     if(XMLDOM.getElementsByTagName("err")[0]){ 
      makeReallyNiceThings(XMLDOM.getElementsByTagName("err")[0].childNodes[0].nodeValue); 
     } 
    } 

它完美的工作。

但是,您有時會更新頁面,並且兩者都在重新工作,完全沒有問題。

我已經面對如此多的情況,我真的很想知道是否有一個地方我可以顯示這些奇怪的錯誤,以使JavaScript更好。谷歌回報我什麼,但只有地方發現程序員錯誤。想法?

+7

帶有JavaScript本身的錯誤應該報告給*瀏覽器*的錯誤跟蹤器。雖然,這很可能是*不是JavaScript的錯誤。 –

+5

那麼,我沒有看到一個問題。在第一個例子中,你可能會得到和*空陣列*這是**不是**沒有。所以條件成爲現實。而在第二個例子中,你做了你真正打算做的事情 - 檢查是否有索引爲0的元素。 – Timofey

+3

這個**是程序員的錯誤**。不,JavaScript不會改變爲將數組(或者說,NodeLists/HTMLCollections)視爲虛假,因爲這會破壞成千上萬個其他網頁。 – Bergi

回答

5

那麼,我沒有看到一個問題。在第一個例子中你可能會得到空陣列這就是不是沒什麼。所以條件成爲現實。而在第二個例子中,你做你真正的意思做 - 或者檢查是否有與指數0
的元素,如果你真的相信,這是不是你的錯,你應該做的Rocket Hazmat說:

帶有JavaScript本身的錯誤應該報告給瀏覽器的錯誤跟蹤器 。雖然,這可能不是JavaScript的錯誤。

但很可能這是代碼中的錯誤。如果沒有err元素,您將獲得空陣列,條件將評估爲true;但沒有第0個元素 - 這就是爲什麼你得到一個豁免。
希望很清楚。