首页 > 解决方案 > 嵌套 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

解决方案


目前没有简洁的方式在纯 JavaScript 中执行此操作,除非您使用辅助函数或第三方库。

有一个提案(截至 2018 年 8 月的第 1 阶段)将?.运算符添加到 JavaScript,这正是您想要的。

接受该提议后,您将能够使用?.而不是.任何可能缺少属性的地方,因此您的代码将变为:

// careful: this syntax is not available yet
var hasDisplay = handlerInput.requestEnvelope.context?.System?.device?.supportedInterfaces?.Display

推荐阅读