处理JavaScript中的嵌套属性

时间:2018-12-14 02:05:33

标签: javascript

如何以简洁的方式将深层嵌套的属性与值进行比较?例如,

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; }
}

0 个答案:

没有答案