본문 바로가기
언어/JavaScript

?? 연산자

by seacode 2025. 3. 28.

1. nullish 병합 연산자

- a ?? b : a가 null 혹은 undefined 라면 b를 반환한다. 그 외엔 a를 반환.

x = (a !== null && a !== undefined) ? a : b; // x = a ?? b

- 주로 값이 정해져있는 변수를 쉽게 찾기위해 사용된다.

let firstName = null;
let lastName = null;
let nickName = "바이올렛";

// null이나 undefined가 아닌 첫 번째 피연산자
alert(firstName ?? lastName ?? nickName ?? "익명의 사용자"); // 바이올렛

 

2. ?? vs ||

- || 는 첫 번째 참을 반환한다.

- ??는 첫 번째 정의된 값을 반환한다.

let height = 0;

alert(height || 100); // 100
alert(height ?? 100); // 0

- height || 100 은 height = 0 이지만, 0 은 false 이므로 null 이나 undefined 를 할당한 것과 같다. 따라서 100.

- height ?? 100 은 height 가 명확하게 null or undefined 일 때만 100이 되므로 0.

- 즉, 높이처럼 0이 할당될 수 있는 변수에는 || 보단 ?? 를 쓴다.

 

3. 낮은 우선순위

- ?? 는 =와 ? 보다는 먼저, 나머지 연산자보다는 뒤에 평가됨.

- 따라서 괄호를 써주는게 이해하기 쉬움.

- 또한 && 와 || 랑 함께 사용할 수 없도록 되어있음 (안정성 이슈때문. 같이 쓰려면 괄호가 필수)

let height = null;
let width = null;

// 괄호를 추가!
let area = (height ?? 100) * (width ?? 50);

alert(area); // 5000

 

 

'언어 > JavaScript' 카테고리의 다른 글

function 사용법  (0) 2025.04.07
반복문  (0) 2025.04.01
논리 연산자  (0) 2025.03.24
조건문  (0) 2025.03.21
비교 연산자  (0) 2025.03.21