在JavaScript(或TypeScript)中,如果我要引用类似的东西:
return myObj1.myObj2.myObj3.myProperty;
为了安全起见,我用以下的方式保护它:
if (myObj1 && myObj2 && myObj3)
return myObj1.myObj2.myObj3.myProperty;
else
return null;
是否有更简洁的方法从上面的引用中获取null而不用if?
包围它请注意,由于我将在TypeScript应用程序中使用它,因此某些解决方案可能无法用于动态对象定义。
感谢。
答案 0 :(得分:1)
您可以定义一些临时对象,以便在查找失败时替换。
return (((myObj1||{}).myObj2||{}).myObj3||{}).myProperty || null;
如果需要,您可以制作可重复使用的对象。
const o = Object.create(null);
然后根据需要使用它。
return (((myObj1||o).myObj2||o).myObj3||o).myProperty || null;
答案 1 :(得分:1)
我使用像lodash
这样的库:
//gets undefined if any part of the path doesn't resolve.
const answer = _.get(myObj1, "myObj2.myObj3.myProperty");
//gets null if any part of the path doesn't resolve.
const answer2 = _.get(myObj1, "myObj2.myObj3.myProperty", null);
有关详细信息,请参阅https://lodash.com/docs/4.17.4#get。