[모던자바스크립트 딥다이브] 9장 타입변환과 단축평가

zzzzzang_gu·2023년 2월 14일
0

자바스크립트

목록 보기
6/23

명시적 타입 변환

개발자가 의도적으로 타입을 변환 하는 것을 명시적 타입 변환 또는 타입 캐스팅이라 한다.

암묵적 타입 변환

자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는것을 암묵적 타입 변환 또는 타입 강제 변환이라고 한다.

명시적 타입 변환이나 암묵적 타입 변환이 기존 원시값을 직접 변경하는 것은 아니다.(원시 값은 변경 불가능한 값) 자바스크립트 엔진은 표현식을 에러 없이 평가하기 위해 피연산자의 값을 암묵적 타입 변환해 새로운 타입의 값을 만들어 단 한 번 사용하고 버린다.

중요한 건! 코드를 이해해 타입 변환이 어떻게 동작하는지 알고 있어야 한다!


단축평가

논리곱 연산자와 논리합 연산자는 논리 연산의 결과를 결정하는 피연산자를 타입 변환하지 않고 그래도 반환한다. 단축평가는 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 말한다.


// cat은 Truthy 값이므로 true로 평가,
// 2번째 연산자가 논리곱 연산자 표현식의 결과를 결정
// Dog도 Truthy 값이므로  true, 'Dog'를 반환한다.
'Cat' && 'Dog' // -> 'Dog'


//논리합은 두 개의 피연산자 중 하나만 true여도 true,
//Cat이 Truthy값으로 true이므로 논리 결정의 결과를 결정한 첫 번째
//피연산자 문자열 Cat을 그대로 반환한다.
'Cat' || 'Dog'  // -> 'Cat'

옵셔널 체이닝 연산자

ES11에서 도입된 옵셔널 체이닝 연산자 ?.는 좌항의 피연산가 null또는 undefined 인 경우
undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어간다.

	
var elem = null;

var value = elem?.value;
console.log(value); // undefined

null 병합 연산자

ES11에서 도입된 null 병합 연산자 ??는 좌항의 피연산자가 null또는 undefined 인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다.

null 또는 undefined가 아니면 좌항의 피연산자를 그대로 반환한다.

	
var foo = null ?? 'default string';
console.log(foo); //'default string'


//좌항의 피연산자가 Falsy값이라도 null또는 undefined가 아니면 좌항의 피연산자를 반환한다.
var foo = '' ?? 'default string';
console.log(foo); // '' 


profile
프론트엔드 개발자가 되겠습니다🔥

0개의 댓글