[ES]?? Operator: Nullish coalescing operator
새로운 연산자인 ??에 대해 다뤄보자.
이름하야
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일때만 왼쪽피연산자를 반환한다.
빈문자열도 마찬가지이다.
그렇다고 ??연산자가 ||보다 더 나은 연산자라고 생각하진 말자. 왜냐 각자의 역할이 있기때문에 유용한곳에 알아서 각각 사용해주면 된다.