티스토리 뷰
Nullish coalescing operator 등장 배경
Null과 유사한 값에 대해서 기본 값을 설정하고 싶을 때가 많다. 가령 DBMS에서 지원하는 ifnull, NVL같은 기능 말이다.
이런 경우 과거에는 아래와 같이 코드를 작성하였다.
// name이 falsy인 경우 기본 값 설정
const a = name || "ban"
Logical OR 연산자를 사용해 falsy(false 유사 값) 값인 경우 다음 값을 할당하는 방식이다.
그런데 이 코드는 문제점이 있다. 바로 falsy에 범위이다.
falsy로 분류되는 대표적인 몇 개의 값은 아래와 같다.
falsy values
false, 0, null, undefined, “”, …
보통 우리가 기본 값을 설정하고자 하는 경우는 “” or 0인 경우가 들어가면 안된다.
왜냐하면 실 데이터에서 값이 저렇게 설정되어 있는 경우가 있기 때문이다.
그래서 위의 코드로 작성하는 경우는 실제 값을 기본 값으로 변경할 위험성을 가지고 있다.
그러면 어떠한 경우에만 기본 값을 설정하고 싶을까? 바로 null or undefined 일 때 이다.
그리고 그 조건을 충족하는 연산자가 Nullish coalecing operator이다.
예제
const foo = null ?? 'default string';
console.log(foo);
// expected output: "default string"
const baz = 0 ?? 42;
console.log(baz);
// expected output: 0
확장
optional Chaining operator (?.) 와 함께 사용 가능 하다.
const foo = { someFooProp: "hi" };
console.log(foo.someFooProp?.toUpperCase() ?? "not available"); // "HI"
console.log(foo.someBarProp?.toUpperCase() ?? "not available"); // "not available"
참고
'개발' 카테고리의 다른 글
| Javascript 동작 방식 (0) | 2022.12.04 |
|---|---|
| [Js] Object Property에 대해 알아보자 (0) | 2022.11.06 |
| [JS] function keyword 없는 함수 (0) | 2022.09.01 |
| [JS] ES modules 와 Destructuring Assign(분해구조 할당) (2) | 2022.08.31 |
| [Js] Proxy 객체로 Data Binding 구현하기 (0) | 2022.08.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Compoent
- shottr
- Macbookc 단축키
- 오블완
- 외래키 삭제
- python Pydantic
- Mac 단축키 설정
- Composable vs Class
- Mac 대문자
- docker mssql
- 의존성 패키지 관리
- oracle 19c 설치
- Mac 한/영
- 스파르타 코딩클럽
- python venv 구성
- Pydantic 기초
- 티스토리챌린지
- AltTab
- Mac 키맵핑
- Oracle Database 19c install
- docker mssql 이미지 생성
- docker mssql create database
- Composable vs Component
- Karabiner 설정
- nuxt3 structure
- Pydantic 기능
- Macbook 초기 설정
- FastAPI 초기 구성
- Oracle Database 19C 설치
- unplugin-auto-import
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
글 보관함
