-
JS - ??와 ||의 차이 (Nullish coalescing operator)개발 2022. 9. 30. 07:30
널 병합 연산자
Nullish Coalescing Operator (널 병합 연산자) 는
왼쪽 피연산자가 null 또는 undefined 일 때 오른쪽 피연산자를 반환하고,
그렇지 않으면 왼쪽 피 연산잔를 반환하는 논리 연산자이다.
const foo = null ?? 'default string'; console.log(foo); // expected output: "default string" const baz = 0 ?? 42; console.log(baz); // expected output: 0
OR 논리 연산자와 무엇이 다른가?
얼핏보면 '널 병합 연산자' 와 'OR 논리 연산자' 는 비슷해보인다.
하지만 널 병합 연산자가 오른쪽 피연산자를 반환하는 조건 중
null 또는 undefined 일 때
라는 내용을 살펴보면 차이점을 정확히 알 수 있다.
OR 논리 연산자는 null 또는 undefined 뿐만 아니라 falsy 값에 해당 할 경우 오른쪽 피연산자를 반환하는 방식이다.
자바스크립트에서 falsy 값에 해당하는 것들을 살펴보면 Boolean 문맥에서 false로 평가되는 값들을 말한다.
따라서, OR 논리 연산자의 경우 0과 빈 문자열('') 같은 값을 Boolean 문맥에서 false로 평가함으로 오른쪽 피연산자를 리턴한다.
위 널 병합 연산자 예제를 OR 논리 연산자와 비교해보면 더 쉽게 알 수 있다.
// 널 병합 연산자 (??) const baz = 0 ?? 42; console.log(baz); // 0 // OR 논리 연산자 (||) const baz = 0 ?? 42; console.log(baz); // 42
널 병합 연산자와 OR 논리 연산자의 차이점을 이해하고, 0과 같은 falsy한 값에 대해서 엄격하게 처리해야 할 경우에는
널 병합 연산자를 활용하는 방법이 더 정확한 개발이 될 수 있겠다.
'개발' 카테고리의 다른 글
Next.js - Incremental Static Regeneration (ISR) 과 SSR caching (2) 2022.10.30 Docker와 Kubernetes (0) 2022.10.21 오해의 소지 없이, 단단하게 "use strict" (0) 2022.09.06 웹 브라우저에 URL을 입력하면 일어나는 일 (0) 2022.09.04 객체 지향 프로그래밍 입문 #2 (0) 2022.08.07