假设我有一个JavaScript对象:
var obj = {};
obj.computers = {};
obj.computers.favorite = "Commodore 64";
obj.computers.popular = "Apple";
Run Code Online (Sandbox Code Playgroud)
现在,我可以轻松检查null,如:
if(obj != 'undefined' && obj != null) {
if(obj.computers != 'undefined' && obj.computers != null)) {
.....
Run Code Online (Sandbox Code Playgroud)
如您所见,如果我需要查看是否obj.computers.favorite
已设置,我必须在那里嵌套一些条件逻辑.我们的一些物体深入3,4,5级.
这是我希望能够做到的:
var fav = obj.computers.favorite || 'Unknown';
Run Code Online (Sandbox Code Playgroud)
但我意识到我需要用某种方法包装它.就像是:
var fav = getValueOrDefault(obj.computers.favorite, 'Unknown');
Run Code Online (Sandbox Code Playgroud)
建议表示赞赏.
谢谢
编辑
我检查'undefined'实际上并不是我使用的.在提出这个问题时,我只是想到了.大声笑
但我想知道,如果异常,我可以在try/catch中包装并抛出默认值吗?
function(obj, default) {
try {
if(obj != null) {
return obj;
} else {
return default;
}
} catch(ex) {
return default;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,感谢Shusi指出冗余的变量.
你真的可以写:
(obj && obj.computers && obj.computers.favorite) || 'Unknown'
Run Code Online (Sandbox Code Playgroud)