Я объясню на примере:
Элвис Оператор (?:)
«Оператор Элвиса» является сокращением троичного оператора Java. Один из примеров того, где это удобно, - это возвращение «разумного значения по умолчанию», если выражение принимает значение false или ноль. Простой пример может выглядеть так:
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
??
) в javascript? Все, что я обнаружил до сих пор, говорит о том, что у JS есть только «фальси» слияние (использование ||
).