比方說,我有一個JavaScript對象,如:如何遍歷JavaScript對象並檢查空值?
var obj = {};
obj.computers = {};
obj.computers.favorite = "Commodore 64";
obj.computers.popular = "Apple";
現在,我可以很容易地檢查像空:
if(obj != 'undefined' && obj != null) {
if(obj.computers != 'undefined' && obj.computers != null)) {
.....
正如你可以看到,如果我需要看看obj.computers.favorite
已定,我必須在那裏嵌入一些條件邏輯。我們的一些物體深度達到3,4,5層。
這是我想什麼能夠做到:
var fav = obj.computers.favorite || 'Unknown';
但我意識到我需要包裝,在一些方法。例如:
3210建議感激。
感謝
編輯
我檢查了 '未定義' 其實不是我所用。問這個問題時,它剛剛出現在我的腦海中。大聲笑
但我想知道,我可以包裝在一個try/catch並拋出默認值,如果異常嗎?
function(obj, default) {
try {
if(obj != null) {
return obj;
} else {
return default;
}
} catch(ex) {
return default;
}
}
此外,感謝Shusi指出冗餘變量。
'OBJ = '未定義' && OBJ = null'是不正確的,因爲得到一個字符串值''undefined'',你會需要typeof。這是一個常見的錯誤。但無論如何,這是不必要的冗長。只要執行'obj!= null',它就會同時測試'undefined'。 –
'getValueOrDefault(obj.computers.favorite,'Unknown')'會在obj.computers未定義時拋出異常。您必須將其包裝在一個字符串中,並執行增量對象分析。 – saml
@saml正好。這是我想要避免的。我們的JS對象有時會變得非常深刻。我想我可以做一個try/catch並且返回默認的異常? – cbmeeks