一尘不染

javascript中是否存在null-coalescing(Elvis)运算符或安全导航运算符?

javascript

我将举例说明:

猫王算子(?:)


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。为了避免这种情况,安全的导航运算符将只返回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

阅读 243

收藏
2020-05-01

共1个答案

一尘不染

您可以使用逻辑“ OR”运算符代替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'>实际上仅用于开发而非生产。

2020-05-01