在JavaScript中是否有空值合并(Elvis)运算符或安全导航运算符?
在JavaScript中是否有空值合并(Elvis)运算符或安全导航运算符?
我将通过示例来解释:
Elvis运算符(?: )
“Elvis运算符”是Java三元运算符的缩写。其中一个常用的情况是,如果表达式解析为false或null,则返回“合理的默认”值。一个简单的例子可能是这样的:
def gender = user.male ? "male" : "female" //traditional ternary operator usage def displayName = user.name ?: "Anonymous" //more compact Elvis operator
安全导航运算符(?.)
安全导航运算符用于避免NullPointerException。通常当您拥有对象的引用时,您可能需要在访问对象的方法或属性之前验证它是否不为空。为了避免这种情况,安全导航运算符将简单地返回null而不是抛出异常,如下所示:
def user = User.find( "admin" ) //this might be null if 'admin' does not exist def streetName = user?.address?.street //streetName will be null if user or user.address is null - no NPE thrown
admin 更改状态以发布 2023年5月22日
你可以使用逻辑运算符"OR"代替猫王运算符:
例如:displayname = user.name || "匿名"
。
但是Javascript目前没有其他功能。如果你想要一种替代语法,我建议你看看CoffeeScript。它有一些类似于你想要的缩写。
例如存在运算符
zip = lottery.drawWinner?().address?.zipcode
函数快捷方式
()-> // equivalent to function(){}
性感函数调用
func 'arg1','arg2' // equivalent to func('arg1','arg2')
还有多行注释和类。显然,你必须将这个编译成javascript或插入页面中