일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- hatso
- object
- learn next.js
- 함수
- es6
- dev
- This
- 변수
- developerlife
- react
- API
- gitCLI
- html5
- 우아한테코톡
- ES5+
- JS
- next.js
- Python
- hooks
- github
- ES6+
- git
- 햇소
- DOM
- 최적화
- CSS
- AI
- 선택자
- JavaScript
- array
Archives
- Today
- Total
codinghatso
nullish 병합 연산자 '??' 본문
nullish 병합 연산자(nullish coalescing operator) ??를 사용하면 짧은 문법으로 여러 피연산자 중 그 값이 ‘확정되어있는’ 변수를 찾을 수 있습니다.
a ?? b의 평가 결과는 다음과 같습니다.
- a가 null도 아니고 undefined도 아니면 a
- 그 외의 경우는 b
nullish 병합 연산자 ??없이 x = a ?? b와 동일한 동작을 하는 코드를 작성하면 다음과 같습니다.
x = (a !== null && a !== undefined) ? a : b;
예시
let firstName = null;
let lastName = null;
let nickName = "바이올렛";
// null이나 undefined가 아닌 첫 번째 피연산자
alert(firstName ?? lastName ?? nickName ?? "익명의 사용자"); // 바이올렛
'??' 와 '||' 의 차이
nullish 병합 연산자는 OR 연산자 ||와 상당히 유사해 보입니다. 실제로 위 예시에서 ??를 ||로 바꿔도 그 결과는 동일하기까지 하죠.
그런데 두 연산자 사이에는 중요한 차이점이 있습니다.
- ||는 첫 번째 truthy 값을 반환합니다.
- ??는 첫 번째 정의된(defined) 값을 반환합니다.
null과 undefined, 숫자 0을 구분 지어 다뤄야 할 때 이 차이점은 매우 중요한 역할을 합니다.
let height = 0;
alert(height || 100); // 100
alert(height ?? 100); // 0
'||' 는 0도 falsy 한 값으로 취급해서 100을 출력하게 되버린다.
'??'는 null 이나 undefined 일 경우에만 100을 출력하게 되어있다.
'??'의 연산자 우선순위는 5로 낮습니다.
때문에 복잡한 표현식 안에서는 괄호를 추가하는 것이 좋습니다.
안정성 관련 이슈 때문에 ?? 는 &&나 || 와 함께 사용하지 못합니다.
'WEB > JavaScript Diary' 카테고리의 다른 글
HTML 문서에 태그 삽입 API 2가지 (0) | 2022.03.24 |
---|---|
뷰포트에 상대적인 위치정보를 제공하는 API (0) | 2022.03.12 |
Arrow function 화살표 함수 (0) | 2022.03.08 |
this 키워드 (0) | 2022.03.08 |
클래스 상속 (Inherit) (0) | 2022.03.06 |
Comments