如何遍历JavaScript对象并检查空值?

cbm*_*eks 2 javascript isnull

假设我有一个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指出冗余的变量.

CD.*_*D.. 6

你真的可以写:

(obj && obj.computers && obj.computers.favorite) || 'Unknown'
Run Code Online (Sandbox Code Playgroud)