小编典典

javascript 中是否有空合并 (Elvis) 运算符或安全导航运算符?

all

我将举例说明:

猫王接线员 (?: )

“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

阅读 122

收藏
2022-05-20

共1个答案

小编典典

您可以使用逻辑“或”运算符代替 Elvis 运算符:

例如displayname = user.name || "Anonymous".

但是 Javascript 目前没有其他功能。如果您想要替代语法,我建议您查看CoffeeScript
它有一些与您正在寻找的类似的速记。

例如存在运算符

zip = lottery.drawWinner?().address?.zipcode

功能快捷键

()->  // equivalent to function(){}

性感的函数调用

func 'arg1','arg2' // equivalent to func('arg1','arg2')

还有多行注释和类。显然,您必须将其编译为 javascript 或插入到页面中,<script type='text/coffeescript>'但它增加了很多功能:)。使用<script type='text/coffeescript'>实际上仅用于开发而不是生产。

2022-05-20