nullish 병합 연산자
??를 사용하여 여러 피연산자 중 그 값이 ‘확정되어 있는’ 변수를 찾을 수 있다.
a ?? b // a가 null도 아니고 undefined도 아니면 a, 그 외의 경우는 b
let first = null;
let last = undefined;
let middle = "바나나";
// null이나 undefined가 아닌 첫 번째 피연산자
console.log(first ?? last ?? middle ?? "second"); // 바나나
const a = { duration: 50 };
a.duration ??= 10;
console.log(a.duration); // 50
a.speed ??= 25;
console.log(a.speed); // 25
function config(options) {
options.duration ??= 100;
options.speed ??= 25;
return options;
}
config({ duration: 125 }); // { duration: 125, speed: 25 }
config({}); // { duration: 100, speed: 25 }
||
와 ??
의 차이||
는 첫 번째 truthy 값을 반환한다.??
는 첫 번째 정의된(defined) 값을 반환한다.null과 undefined, 숫자 0을 구분 지어 다뤄야 할 때 이 차이점은 매우 중요한 역할을 한다.
let price = 0;
console.log(price || 100); // 100
console.log(price ?? 100); // 0