javascript - 嵌套 javascript 对象中的值检查(可能不存在)
问题描述
有没有一种优雅而简洁的方法来避免做这样的事情来检查javascript中对象成员层次结构中的深层值?
handlerInput.supportsDisplay = function() {
return this.requestEnvelope.context &&
this.requestEnvelope.context.System &&
this.requestEnvelope.context.System.device &&
this.requestEnvelope.context.System.device.supportedInterfaces &&
this.requestEnvelope.context.System.device.supportedInterfaces.Display;
}
解决方案
目前没有简洁的方式在纯 JavaScript 中执行此操作,除非您使用辅助函数或第三方库。
有一个提案(截至 2018 年 8 月的第 1 阶段)将?.
运算符添加到 JavaScript,这正是您想要的。
接受该提议后,您将能够使用?.
而不是.
任何可能缺少属性的地方,因此您的代码将变为:
// careful: this syntax is not available yet
var hasDisplay = handlerInput.requestEnvelope.context?.System?.device?.supportedInterfaces?.Display
推荐阅读
- java - 为 java 构建带有额外模块的 opencv 4.5.0
- docker - Docker - 在 dockerfile 中使用 curl
- sql - 在oracle sql中获取每个月的累计总和
- javascript - 如何从其他数组生成基于数组索引的交集(数组或对象类型)?
- linux - 交叉编译引用其他符号链接的库的 c 应用程序库
- python - 将熊猫数据框保存在动态创建的文件夹中
- python - 如何将一列拆分为逗号分隔的字符串?
- javascript - JS 迷你函数
- jquery - 如何从 MEDIA_ROOT 获取路径以将其保存为模型中的字符串?
- c - 从函数返回后,条件跳转或移动取决于未初始化的值