티스토리 뷰
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
- Oracle Database 19c install
- vue watch 문제점
- unmounted setinterval
- nuxt3 structure
- vue 타이머 해제
- vue 이벤트 해제
- vue onunmounted
- dockerignore
- Oracle Database 19C 설치
- oracle 19c 설치
- unmounted composable
- docker multi stage build
- 티스토리챌린지
- vue watch 위험성
- 스파르타 코딩클럽
- docker image 경량화
- 외래키 삭제
- vue unmounted
- vue watch 대체
- unplugin-auto-import
- docker mssql
- nuxt3 quasar 설정
- vue 리팩토링
- 스마트피싱보호_캠페인
- nuxt3 eslint prettier 설정
- nuxt3 프로젝트 설정
- 오블완
- docker mssql create database
- docker mssql 이미지 생성
- unmounted document.addlistener
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함