2011-11-17 37 views
2

我有,我聲明對象var o = null;類型錯誤:爲空

然後,我通過它變成一個功能,做的東西,也許一個對象分配給它的情況。

稍後,我執行parse(o.page)。 如果o爲空,那麼我得到「TypeError:o.page爲null」, 並且程序在那裏停止,因爲我試圖獲取空值的屬性。

我知道一個解決方案可能是最初將null分配給所有的o的屬性。

只是想知道是否有更微妙的方式來處理這個錯誤。 ,因爲我想處理parse1(o);parse2(o.page1),其中o可以爲空。

+0

如果你展示了更多的代碼,我想有一種方法可以創建一個完美的解決方案來避免這個問題。 – Tomalak

回答

3

您可以使用三元運算來做到這一點:

parse2(o ? o.page1 : null) 

有沒有辦法讓o.page對自己的工作時,onull

還有其他方法,例如返回{}而不是null,因爲調用不存在的屬性會產生undefined而不是拋出錯誤。

一般來說,避免無效呼叫在您的代碼中逗留的情況是值得推薦的。您可以在使用它之前檢查返回值(如上所述),或者不返回可能導致後續代碼無效的值。

2

而不是null,分配一個空對象。

var o = {}; 

如果是null不能將財產分配給o。這將導致

TypeError: Cannot set property 'propname' of null 
+0

謝謝,我希望我能給你一點 – airnet