我的代码中有很多地方都有以下格式:
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