我正在寻找一些好的策略来避免JavaScript中的错误,当使用点符号来调用可能存在或不存在的对象中的子项的子项时.
在下面的代码片段的底部是一个有效的解决方案示例,但是不够优雅(充其量).
很高兴看到一些本机JavaScript解决方案甚至外部库可以帮助避免这种错误.
const object1 = {
foo: {
bar: {
baz: 'payload'
}
}
};
const object2 = {};
const array = [object1, object2];
// this will fail on object2 because obj.foo is undefined
array.forEach(obj => {
if (obj.foo.bar.baz) {
console.log(obj.foo.bar.baz);
} else {
console.log('undefined');
}
}
);
// this will work, but it's horrible to write all those nested if statements.
array.forEach(obj => {
if (obj) {
if (obj.foo) {
if (obj.foo.bar) {
if (obj.foo.bar.baz) {
console.log(obj.foo.bar.baz);
} …Run Code Online (Sandbox Code Playgroud)