티스토리 뷰
반응형
Nullish란.
널 병합 연산자(Nullish coalescing operator, ??)는 왼쪽 피연산자가 null 또는 undefined일 때 오른쪽 피연산자를 반환하고, 그렇지 않으면 왼쪽 피연산자를 반환하는 논리 연산자이다.
??의 동작을 동일하게 문법적으로 표현해보면 다음과 같다.
/* 아래 두 구문은 동일한 의미를 지닌다. */
x = a ?? b;
x = (a !== null && a !== undefined) ? a : b;
이는 ||와 매우 유사한 연산결과를 나타낸다.
||의 경우 boolean 논리 연산자 때문에, 왼쪽 피연산자는 boolean으로 강제로 변환되었고 falsy 한 값(0, '', NaN, null, undefined)은 반환되지 않는다. 만약 0, '' or NaN을 유효한 값으로 간주한 경우 예기치 않는 결과를 초래할 수 있다.
즉, 값이 정의되지 않은 경우(null)와 변수의 선언 유무(undefined)만을 검증하려고 하는 경우엔 ??를 사용하고
값의 할당 유무를 논리적으로 고려한 연산에서는 ||를 사용한다.
let cnt = 0;
let text = "";
let qty1 = cnt || 42;
let message1 = text || "check";
console.log(qty1); // 42
console.log(message1); // "check"
let qty2 = cnt ?? 42;
let message2 = text ?? "check";
console.log(qty2); // 0
console.log(message2); // ""
주의
단, 안정성 이슈 때문에 ??는 &&나 ||와 함께 사용하지 못한다.
이 경우엔 "괄호"로서 연산 우선순위를 정해줘야 에러를 피할 수 있다.
let x = 1 && 2 ?? 3; // SyntaxError: Unexpected token '??'
let x = (1 && 2) ?? 3; // success. x = 2;
반응형
'Devolopment > Javascript' 카테고리의 다른 글
vscode에서 javascript 외부 모듈 자동완성이 안되는 경우 (0) | 2024.05.14 |
---|---|
canvas 2.7.0 vs glibc-2.18 (feat. GLIBC_2.18 설치방법) (0) | 2022.11.28 |
반응형
최근에 달린 댓글