Enjoy Programming

[ES]?? Operator: Nullish coalescing operator 본문

JavaScript/Vanilla Js

[ES]?? Operator: Nullish coalescing operator

LEETAEEON 2021. 7. 7. 10:59

새로운 연산자인 ??에 대해 다뤄보자.

이름하야

Nullish coalescing operator 

뭔뜻인고 하니 null 병합연산자란다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

 

Nullish coalescing operator - JavaScript | MDN

널 병합 연산자 (??) 는 왼쪽 피연산자가 null 또는 undefined일 때 오른쪽 피연산자를 반환하고, 그렇지 않으면 왼쪽 피연산자를 반환하는 논리 연산자이다.

developer.mozilla.org

mdn을 살펴보면

널 병합연산자는 왼쪽 피연산자가 null 또는 undefined일때 오른쪽 피연산자를 반환하고~ 그렇지 않으면 왼쪽 피연산자를 반환하는 논리 연산자이다~

OR연산자와 다른점은 falsy값에도 해당되는지 아닌지이다. 연산자의 우선순위가 ||(or)연산자의 바로 아래이며 삼항연산자의 바로위이다.

 

기본적으로 or연산자는 변수에 기본값을 줄때 유용하다.

예를 들어 값이 할당되지 않은 name이라는 변수가 있고 이를 출력하면  기본적으로 undefined가 나온다.

||를 써서 name이 false이면 lee를 출력하도록 해주면 default로 사용해서 출력해 줄 수 있다.

문제는  || 연산자는 true와 false만 판단할 수 있다. name에 값이있어 true라면 name값을 출력하고 false면 오른쪽 피연산자를 반환한다.

만약 name에 0을 넣어준다면? 그리고 내가 출력하고싶은 것은 0이라면? 0을 넣어도 오른쪽 피연산자 값이 나오게 된다.

0은 프로그래밍 상 false로 판단되어 false로 인식해 오른쪽값이 나오게 되는 것이다.

 

이러한 점을 보완하기 위해 ?? 연산자가 나왔는데 ||대신에 ?? 써보면~

0이 제대로 출력됨을 볼 수 있다. 이는 ?? 연산자는 왼쪽피연산자가 null이거나 undefined일때만 왼쪽피연산자를 반환한다.

빈문자열도 마찬가지이다.

 

그렇다고 ??연산자가 ||보다 더 나은 연산자라고 생각하진 말자. 왜냐 각자의 역할이 있기때문에 유용한곳에 알아서 각각 사용해주면 된다.

'JavaScript > Vanilla Js' 카테고리의 다른 글

[ES] padStart and padEnd  (0) 2021.07.07
[ES] optional chaining  (0) 2021.07.07
[ES6] Proxy  (0) 2021.07.06
[ES6] generator  (0) 2021.07.06
[ES6] MAP && Weak Map  (0) 2021.07.06