티스토리 뷰

Devolopment/Javascript

Nullish (Javascript)

OpenUiz 2022. 3. 31. 17:22
반응형

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;

 

반응형
반응형
최근에 달린 댓글