728x90

자바스크립트 기본(12) - 병합 연산자 '??'

자바스크립트의 nullish 병합 연산자 ??를 사용하면 짧은 문법으로
여러 피연산자 중 그 값이 확정되어있는 변수를 찾을 수 있다.
a ?? b의 결과 값은 anull또는 undefined가 아니라면 a, 그 외는 b이다.

x = a ?? b와 동일한 코드를 작성하려면

x = (a !== null && a !== undefined) ? a : b;

이렇게 긴 코드가 발생한다.



'??'와 '||'

이전에 OR연산자 ||와 상당히 유사해보이며 같은 결과를 보이기도 한다.
그러나 ||은 첫 번째 truthy 값을 반환하며 ??는 첫 번째 정의된 값을 반환하는 차이가 있다.
만약 변수에 0이라는 수를 할당한 경우 ||에 의해서는 falsy 값으로 처리되어 선택되지 않지만
??연산자에 의해서는 0이라는 값이 결과 값으로 반환된다.



우선순위

?? 연산자의 우선순위는 5로 꽤 낮은 편이므로, 복잡한 표현식 내 값을 선택할 때는 괄호를 쓰는 것이 좋다.
??||&&를 함께 사용할 수 없는데, 이는 ||??로 전환하면서 발생하는 실수를 방지한다.

let x = 1 && 2 ?? 3; // SyntaxError: Unexpected token '??'
let x = (1 && 2) ?? 3; // 동작(2)
728x90

+ Recent posts