安全地合并JavaScript子属性

时间:2017-01-12 19:14:20

标签: javascript undefined coalesce

我想知道是否有更简洁的方法来进行空合并和检查未定义?

例如,我有一个变量,我想初始化为可能定义或不定义的对象的属性值,在这种情况下,null是最好的,因为falseyness是一件很棒的事情

function DoWork(){
    var foobar = 
      typeof foo !== "undefined" 
        ? typeof foo["bar"] !== "undefined" 
          ? foo["bar"] || null 
          : null 
        : null;

    ...
}

console.log(JSON.stringify(foobar));   //output is either foo["bar"]'s value or null

你可以看到这变得混乱。我很好奇是否有更好的方法来处理这类事情。

谢谢!

1 个答案:

答案 0 :(得分:3)

没有内置语法。像lodash这样的库有深度获取方法,可以解决这个问题:

_.get(x, 'deep.path.property') 

以上将返回x.deep.path.propertyundefined的值,如果任何对象(包括x)不存在。< / p>

这样的功能并不难写。您可以将其作为思考练习,并获得所需的界面(使用null代替undefined),或者您可以查找lodash.get实施(您需要)跟进一些进口)。