728x90
반응형
옵셔널 체이닝(Optioinal Chaining)
옵셔널 체이닝은 ?.을 사용한다.
const name = person?.name
좌항(person)이 undefined나 null이면 좌항(person)을 반환하고, 그렇지 않으면 우항(person.name)을 반환한다.
옵셔널 체이닝이 도입되기 전에는 && 연산자를 사용했다.
&&연산자
const name = person && person.name
&&연산자는 좌항(person)이 falsey값이면(0, -0, '', null, undefined, false, NaN) 좌항(person)을 반환하고, 그렇지 않으면 우항(person.name)을 반환한다.
&&연산자는 falsy값이 조건이지만, 옵셔널 체이닝은 undefined나 null인 경우가 조건 이라는 점에서 다르다
null 병합 연산자(nullish coalescing)
null병합 연산자는 ??을 사용한다.
const foo = null ?? 'default string';
console.log(foo); // "default string"
좌항(null)의 값이 null이나 undefined면 우항을('default string') 반환하고, 아니면 좌항을(null) 반환한다.
nullish coalescing이 도입되기 전에는 ||연산자를 사용했다.
|| 연산자
const foo = "" || "default string";
conosle.log(foo); // "default string"
||연산자는 좌항("")이 falsy값이면 우항("default string")을 반환하고, 아니면 좌항을 반환한다.
""는 falsy값이므로 "default string"이 반환된 것을 볼 수 있다.
||연산자는 flasy값이 조건이지만, null병합 연산자는 null이나 undefined가 조건이라는 점에서 다르다.
728x90
반응형
'javascript' 카테고리의 다른 글
[javascript] 생성자 함수, 내부 슬롯 [[Construct]] (2) | 2022.04.05 |
---|---|
[javascript] Method Chaining Pattern (0) | 2022.04.01 |
[javascript] 상속 구현하기 (0) | 2021.12.30 |
[javascript] 프로토타입 체이닝이란? (0) | 2021.12.20 |
[javascript] prototype과 [[prototype]]의 차이, implicit prototype link (0) | 2021.12.16 |