Тернарные операторы || ?? &&
?:
Условный тернарный оператор
Выражение (expr1) ? (expr2) : (expr3)
интерпретируется как expr2, если expr1 имеет значение true
, или как expr3, если expr1 имеет значение false
.
let res = (2 > 1) ? 'если true' : 'если false';
if(2 > 1) {
let res = 'если true';
}else{
let res = 'если false';
}
||
Возвращает первый истинный операнд. Если все ложные, то возвращает последнее ложное.
alert( 1 || 0 ); // 1
alert( true || 'no matter what' ); // true
alert( null || 1 ); // 1 (первое истинное значение)
alert( null || 0 || 1 ); // 1 (первое истинное значение)
alert( undefined || null || 0 ); // 0 (поскольку все ложно, возвращается последнее значение)
??
Возвращает первое значение которое является не null
/undefined
. Если все значения или null
или undefined
, то вернёт последнее.
alert(null ?? undefined ?? "Gizmo" ?? "Overfinch"); // "Gizmo"
alert(null ?? undefined ?? false ?? "Gizmo" ?? "Overfinch"); // false
alert(null ?? undefined ?? undefined ?? null); // null
&&
Возвращает первый ложный операнд. Если все операнды были истинными, возвращается последний.
// Если первый операнд истинный,
// И возвращает второй:
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5
// Если первый операнд ложный,
// И возвращает его. Второй операнд игнорируется
alert( null && 5 ); // null
alert( 0 && "no matter what" ); // 0
Last updated