Don*_*n P 3 javascript oop underscore.js
我想检查一个对象是否存在,并且有一个属性.目前我收到"myObject is undefined"错误,停止检查.
即使myObject可能不存在,如何使以下内容仍能正常工作?
if (myObject.myProperty) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
我试图甚至检查对象/变量是否存在但是收到错误:
if (foo) { console.log('hello'); }给出错误Uncaught ReferenceError:foo未定义.这是一个jsfiddle http://jsfiddle.net/cfUss/
您可以使用"短路" &&操作符:
if (myObject && myObject.myProperty) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果myObject是"falsey"(例如,未定义),则&&操作员将不会费心去尝试评估右手表达式,从而避免尝试引用不存在的对象的属性.
变量myObject必须已经声明了,上面的测试是针对它是否已经分配了一个定义的值.
小智 6
您可以使用可选的链接运算符?.来保持简洁:
if (myObject?.myProperty) { ... }
Run Code Online (Sandbox Code Playgroud)
这等于更详细一点
if (myObject && myObject.myProperty) { ... }
Run Code Online (Sandbox Code Playgroud)
它非常方便,特别是对于深度嵌套的对象。
目前(2019 年 9 月)是ECMAScript 第 3 阶段提案,但看起来很有希望该功能将正式可用。目前,您已经可以通过相应的 Babel 插件开始使用它:https ://babeljs.io/docs/en/babel-plugin-proposal-optional-chaining
| 归档时间: |
|
| 查看次数: |
2754 次 |
| 最近记录: |