Wytłumaczę na przykładzie:
Elvis Operator (?:)
„Operator Elvisa” to skrót od trójskładnikowego operatora Javy. Jednym z przykładów, w których jest to przydatne, jest zwrócenie „rozsądnej wartości domyślnej”, jeśli wyrażenie ma wartość false lub zero. Prosty przykład może wyglądać następująco:
def gender = user.male ? "male" : "female" //traditional ternary operator usage
def displayName = user.name ?: "Anonymous" //more compact Elvis operator
Operator bezpiecznej nawigacji (?.)
Operator Bezpiecznej nawigacji służy do unikania wyjątku NullPointerException. Zazwyczaj, gdy masz odwołanie do obiektu, może być konieczne sprawdzenie, czy nie ma on wartości zerowej przed uzyskaniem dostępu do metod lub właściwości obiektu. Aby tego uniknąć, operator bezpiecznej nawigacji po prostu zwróci wartość null zamiast zgłaszania wyjątku:
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
??
) w javascript? Wszystko, co do tej pory znajdowałem, sugeruje, że JS ma tylko „falsey” koalescencji (używania ||
).