寻找一种更简单的方法来检查是否有多个属性&对象中的方法未定义
考虑以下代码:
if(eform[funcName] !== undefined){
if(eform[funcName].init !== undefined){
//finally do something
}
}
我首先检查 eform
对象是否具有变量 funcName
指定的属性。如果是,那么我需要检查该属性是否具有 init
方法。
有没有办法将它们组合成一个 if
语句?或者也许有比这更优雅的东西?
Consider the following code:
if(eform[funcName] !== undefined){
if(eform[funcName].init !== undefined){
//finally do something
}
}
I'm first checking to see if the eform
object has the property specified by the variable funcName
. If it does, then I need to check whether that property has an init
method.
Is there any way to combine these into a single if
statement? Or perhaps something even more elegant than that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用短路评估:
如果
eform[funcName]
未定义,则永远不会检查 if false 和eform[funcName].init
语句。根据偏好/可读性,以下内容也有效:Using Short-Circuit evaluation:
If
eform[funcName]
is undefined the statement if false andeform[funcName].init
is never checked. Depending on preference/readability this following is vaild as well:认为一个更好:
如果第一个条件为假,则不会检查第二个条件。
think that one is better:
if the first condition is false than the second condition wont be checked.
JS 有一种新的、优雅的方式来实现这一点 - 可选链接 运算符
它看起来像这样:
适用于所有现代浏览器。
但 babel 尚未原生添加对此操作的支持,并会引发编译错误。在这种情况下,babel 建议:
JS has a new, elegant way to achieve this - The Optional Chaining operator
It looks like this:
Works with all modern browsers.
But babel has not yet added support for this op natively and throws a compilation error. In that case, babel suggests: