Vou explicar pelo exemplo:
Operador de Elvis (?:)
O "operador Elvis" é uma abreviação do operador ternário de Java. Uma instância em que isso é útil é o retorno de um valor 'sensível padrão' se uma expressão resolver como falsa ou nula. Um exemplo simples pode ser assim:
def gender = user.male ? "male" : "female" //traditional ternary operator usage
def displayName = user.name ?: "Anonymous" //more compact Elvis operator
Operador de navegação segura (?.)
O operador Navegação segura é usado para evitar uma NullPointerException. Normalmente, quando você tem uma referência a um objeto, pode ser necessário verificar se ele não é nulo antes de acessar métodos ou propriedades do objeto. Para evitar isso, o operador de navegação segura simplesmente retornará nulo em vez de lançar uma exceção, da seguinte forma:
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
??
) em javascript? Tudo o que estou encontrando até agora sugere que o JS só tem coalescência "falsey" (usando ||
).