Javascript-如何创建有效的变量链

Javascript-如何创建有效的变量链,javascript,Javascript,我的代码中的许多地方都有以下格式: if (a && a.b && a.b.c && a.b.c.d) { //do something with a.b.c.d } 如果a、b、c和d有一个更复杂的名字,这是非常难看、耗时且容易出错的 是否有一种“糖衣”,比如: if (valid(a.b.c.d)) { //do something with a.b.c.d } 您可以使用递归帮助器函数来执行此操作,例如: function

我的代码中的许多地方都有以下格式:

if (a && a.b && a.b.c && a.b.c.d) {
    //do something with a.b.c.d
}
如果a、b、c和d有一个更复杂的名字,这是非常难看、耗时且容易出错的

是否有一种“糖衣”,比如:

if (valid(a.b.c.d)) {
    //do something with a.b.c.d
}

您可以使用递归帮助器函数来执行此操作,例如:

function valid(obj, chain) {
    if (!chain.length) {
        return true;
    }
    var prop = chain.shift();
    return !obj.hasOwnProperty(prop) ? false : valid(obj[prop], chain);
}

var a = { b: { c: { d: 1 } } };

console.log(valid(a, ['b', 'c', 'd'])); // true
console.log(valid(a, ['b', 'c', 'e'])); // false

您可以使用
try/catch
,但它有性能惩罚。dash有
:这种功能本机不受支持(即使在ES6中)。但您可以使用libs,例如: