假设我有一个 JavaScript 对象,例如:
var obj = {};
obj.computers = {};
obj.computers.favorite = "Commodore 64";
obj.computers.popular = "Apple";
现在,我可以轻松地检查 null,例如:
if(obj != 'undefined' && obj != null) {
if(obj.computers != 'undefined' && obj.computers != null)) {
.....
如您所见,如果我需要查看是否obj.computers.favorite
已设置,我必须在其中真正嵌套一些条件逻辑。我们的一些对象有 3、4、5 层深。
这就是我希望能够做到的:
var fav = obj.computers.favorite || 'Unknown';
但我意识到我需要用某种方法来包装它。就像是:
var fav = getValueOrDefault(obj.computers.favorite, 'Unknown');
建议表示赞赏。
谢谢
编辑
我对“未定义”的检查实际上并不是我使用的。当我问这个问题时,它只是从我的脑海中浮现出来。哈哈
但我想知道,我可以只包装一个 try/catch 并在异常时抛出默认值吗?
function(obj, default) {
try {
if(obj != null) {
return obj;
} else {
return default;
}
} catch(ex) {
return default;
}
}
另外,感谢 Shusi 指出多余的变量。