-
[JS] 자바스크립트, Nullish Coalescing Operator (다른 논리 연산자와 비교)Frontend 2020. 3. 12. 09:50
오늘은 자바스크립트의 Nullish coalescing operator에 대해서 간단히 정리해보려고 한다.
(TypeScript 3.7부터 지원된다!)
coalesce는 사전을 찾아보니 뭔가를 합친다, 병합하다 이런 뜻을 가지고 있다.
아마 Nullish는 null과 같은 것들을 말하는 것일거다.
그러니까 null과 같은 것들을 병합하는 연산자(?)라고 할 수 있을 것 같다.
물론 뭔 말인지 하나도 모르겠으니 MDN의 설명을 찾아보자.
Nullish coalescing operator(??)는 논리 연산자로
왼쪽 피연산자가 null이나 undefined일 때, 오른쪽 피연산자를 return한다.
반대의 경우에는 왼쪽 피연산자가 return된다.
그럼 이제 내가 맨 처음에 냈던 문제의 답을 알아보자!
let a = null ?? 'hello'; let b = '' ?? true; let c = false ?? true; let d = 0 ?? 1; let e = undefined ?? 'world'; console.log(a); // 'hello' console.log(b); // '' console.log(c); // false console.log(d); // 0 console.log(e); // 'world'
이제 OR 연산자(||)와 어떻게 다른지 알 수 있을 것이다.
OR 연산자는 왼쪽 피연산자가 null, undefined 뿐만 아니라 falsy값이면 오른쪽 피연산자를 return한다.
let a = null || 'hello'; let b = '' || true; let c = false || true; let d = 0 || 1; let e = undefined || 'world'; console.log(a); // 'hello' console.log(b); // true console.log(c); // true console.log(d); // 1 console.log(e); // 'world'
Short-circuiting
leftExpr ?? rightExpr
다른 논리연산자와 마찬가지로 왼쪽 피연산자가 null이나 undefined가 아니어서
오른쪽 피연산자를 계산할 필요가 없는 상황이라면 오른쪽 피연산자는 평가되지 않는다.
(즉, 왼쪽 피연산자만 return하고 오른쪽 피연산자는 무시된다.)
No chaining with AND or OR operators
null || undefined ?? "foo"; // raises a SyntaxError
?? 연산자는 AND(&&)와 OR(||)연산자와 직접적으로 같이 사용하는 것은 불가능하다.
위와 같이 사용하면 SyntaxError가 발생할 것이다.
(null || undefined) ?? "foo"; // returns "foo"
그렇지만 소괄호와 함께 사용하면 가능하다.
Reference
반응형'Frontend' 카테고리의 다른 글
[Redux saga] 리덕스 사가에 대해서 (Redux toolkit과 같이 사용해보기) (254) 2020.04.12 [Js] 자바스크립트, Generator 함수에 대하여 (253) 2020.03.29 [JS] 자바스크립트, Optional Chaining (252) 2020.03.11 [JS/CustomEvent] 자바스크립트, 커스텀 이벤트 생성하기 (252) 2020.03.07 [TypeScript] 타입스크립트 - Generic (252) 2020.03.03 COMMENT