javascript - 在 JavaScript 中,是否有更简单的方法来检查属性的属性是否存在?

标签 javascript optional-chaining

在 JavaScript 中,是否有一种简单的方法来 native 确定对象中是否存在深层属性?例如,我需要访问这样的属性:

var myVal = appData.foo.bar.setting;

但是有可能还没有定义 foo、foo.bar 或 foo.bar.setting。在 Groovy 中,我们可以这样做:

def myVal = appData?.foo?.bar?.setting

在 JavaScript 中是否有类似的方法来执行此操作,而无需编写自定义函数或嵌套 if 语句?我找到了 this answer很有用,但希望有一种更优雅、更少定制的方式。

最佳答案

我觉得这很方便:

var myVal = (myVal=appData) && (myVal=myVal.foo) && (myVal=myVal.bar) && myVal.settings;

如果属性存在,将尝试序列的下一部分。

&& 之前的表达式计算结果为 false 时,表达式的下一部分将不会被检查。如果未定义 myVal.appData.foo.bar.settings 中的任何一个,则 myVal 的值(undefined(将评估为 假的

关于javascript - 在 JavaScript 中,是否有更简单的方法来检查属性的属性是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636789/

相关文章:

javascript - JavaScript 5 中 for 和 foreach 的区别

javascript - 如何使 webpack 接受没有 babel 的可选链接

javascript - 在 rails 2.x 中将部分特定的 javascript 放在哪里

javascript - 无法将事件处理程序注册到 javascript 中的元素数组

javascript - 如何像 Google Analytics 一样缩小 JavaScript?

javascript - JavaScript 中的可选链接

react-native - 可选链未启用 React Native

javascript - 如何将可选链接与数组和函数一起使用?

javascript - 在数组映射期间与 toLowerCase 和 indexOf 组合的可选链接

javascript - Chrome 扩展在加载同步数据后运行 Angular