Javascript - 如何有效变量链

Javascript - how to valid variable chain

本文关键字:有效 变量 何有效 Javascript      更新时间:2023-09-26

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

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