如何以简洁的方式将深层嵌套的属性与值进行比较?例如,
if (obj.prop1.prop2.prop3.prop4 === true) { /* ... */ }
鉴于propN
中的任何一个也可以是null
,有没有一种好的方法来避免对每个null
进行测试?例如,在C#中,我可以做这样的事情:
if (obj?.prop1?.prop2?.prop3?.prop4 === true) { /* ... */ }
在JavaScript中,我可能可以执行以下操作,但是我不太喜欢它:
const ob = { prop1: null };
if (compare(() => ob.prop1.prop2.prop3.prop4 === true)) { /* ... */ }
function compare(lambda) {
try { return lambda(); }
catch(e) { if (e instanceof TypeError) return false; throw e; }
}