|| - ?? / 두 연산자에 차이

요란·2024년 6월 9일

codeReview

목록 보기
1/1

왜 한 코드에 ||, ?? 두개 연산자가 섞여서 있죠? 두 개의 차이가 뭐죠?

코드를 리뷰하면서, 이런 질문을 받았었다.

const user = record.user ?? "";
const user = record.user || "";

이처럼 나는 코딩을 짜면서 두 연산자를 그냥 하고 싶은데로 쓰고 있었다. 두 연산자는 어떤 차이가 있고, 어떨 때 쓰는게 효과적일까?

Nullish coalescing operator (??)

Nullish coalescing operator(널 병합 연산자) 기준 왼쪽 연산자가 null 또는 undefined 값일 때, 오른쪽 연산자가 반환되고, 그렇지 않으면 왼쪽 연산자를 반환하는 논리 연산자다.

Logical OR (||)

Logical OR(논리적 분리)연산자는 연산자 중 하나 이상이 참인 경우에만 참을 반환하는 논리연산자다.

x || y

만약 x를 true로 반환 가능하면, x를 반환하고, 그렇지 않으면 y를 반환한다. 그래서 OR 연산자는 좀 더 넓은 falsy한 값을 사용한다.

null, NaN, 0, "", undefined

그래서 널 병합 연산자 보다 큰 범위가 논리적 연산자라고 생각하면 된다. 그래서 이제 나의 대답은

널 병합 연산자는 해당 값이 null, undefined 값일 경우, 오른쪽 연산자 값을 사용하기 위해 사용했고, 논리적 연산자는 해당 값들 중 참인 값이 있으면 참을 반환하기 위해 사용했습니다.

profile
Javascript Developer

0개의 댓글