자바스크립트 물음표 두개 '??'는 뭘까?: JS Nullish Coalescing Operator
안녕하세요. 독자 여러분! 최근 자바스크립트에서 흔히 볼 수 있는 물음표 두 개 (??
) 가 뭔지 궁금해하시는 분들이 많았습니다. 오늘은 바로 이 Nullish Coalescing Operator에 대해 알아보도록 하겠습니다.
1. ??
연산자의 정의
1.1. 무엇을 위한 연산자인가?
Nullish Coalescing Operator (??
) 는 자바스크립트에서 relatively 최신 문법입니다. 이 연산자는 왼쪽 피연산자가 null
또는 undefined
일 경우 오른쪽 피연산자를 반환합니다. 만약 왼쪽 피연산자가 그렇지 않으면, 왼쪽 피연산자를 반환합니다.
let result = value ?? "default";
1.2. 왜 필요한 연산자일까?
기존에 우리는 ||
연산자를 사용하여 동일한 목적으로 사용했습니다. 그런데 ||
는 falsy 값에 대해서도 오른쪽 피연산자를 반환하는 반면, ??
는 오직 null
과 undefined
에 대해서만 오른쪽 피연산자를 반환한다는 점에서 차이가 있습니다.
2. ??
와 ||
의 주요 차이점
2.1. Falsy 값과 Nullish 값
자바스크립트에서 falsy 값에는 false
, 0
, ""
, null
, undefined
, NaN
등이 있습니다. 반면, nullish 값은 null
과 undefined
두 가지입니다.
2.2. 코드 스니펫을 통한 차이점 이해
let falsyValue = 0;
let result1 = falsyValue || "default"; // "default"
let result2 = falsyValue ?? "default"; // 0
위의 예시를 보면, ||
연산자는 falsyValue
가 falsy값이기 때문에 "default"를 반환합니다. 그러나, ??
연산자는 falsyValue
가 nullish값이 아니기 때문에 0
을 반환합니다.
3. 언제 ??
연산자를 사용해야 할까?
3.1. 디폴트 값 설정 시
??
연산자는 주로 객체의 속성값이 null
또는 undefined
일 때 디폴트 값을 설정하는데 유용합니다.
let user = {
name: "John",
age: null
};
let age = user.age ?? 25; // 25
3.2. 함수 매개변수의 기본값 설정
함수의 매개변수 값이 전달되지 않았을 때 디폴트 값을 설정하는 데에도 ??
연산자를 활용할 수 있습니다.
function greet(name = null) {
let greetingName = name ?? "Guest";
console.log(`Hello, ${greetingName}!`);
}
greet(); // Hello, Guest!
마치며
요약하면, ??
연산자는 자바스크립트에서 null
과 undefined
값을 체크하고 그에 따라 다른 값을 반환할 때 유용한 도구입니다. 기존의 ||
연산자와의 차이점을 정확히 이해하고 적절한 상황에서 사용하는 것이 중요합니다.