9.1. 타입 변환이란?
- 명시적 타입 변환 / 타입 캐스팅: 개발자가 의도적으로 값의 타입을 변환함
- 암묵적 타입 변환 / 타입 강제 변환: 자바스크립트 엔진에 의해 자동 변환됨
- 타입 변환이란 기존 원시 값을 이용해 새로운 원시 값을 생성함
9.2. 암묵적 타입 변환
9.2.1. 문자열 타입으로 변환
- '+' 연산자는 피연산자 중 하나 이상이 문자열인 경우 암묵적 타입 변환
9.2.2. 숫자 타입으로 변환
- 산술 연산자에서 모든 피연산자는 숫자 타입이어야 함
- 숫자 타입이 아닌 경우 암묵적 타입 변환
- 변환할 수 없는 경우 NaN
- 비교 연산자에서도 문맥상 필요한 경우 암묵적 타입 변환
9.2.3. 불리언 타입으로 변환
- if 문, for 문과 같은 제어문 등의 조건식에서 불리언 타입으로 암묵적 타입 변환
- Falsy
- false, undefined, null, 0, -0, NaN, ''(빈 문자열)
- ! 부정 연산자를 붙이면 모두 true
- Falsy 외에 모든 값은 Truthy
9.3. 명시적 타입 변환
- 표준 빌트인 생성자 함수: String, Number, Boolean
9.3.1. 문자열 타입으로 변환
- String 생성자 함수 호출
- Object.prototype.toString() 메서드 사용
- 문자열 연결 연산자 사용
9.3.2. 숫자 타입으로 변환
- Number 생성자 함수 호출
- parseInt, parseFloat 함수 사용 (문자열만 가능)
9.3.3. 불리언 타입으로 변환
- Boolean 생성자 함수 호출
- ! 부정 논리 연산자 두 번 사용
- ex) !!'' -> false, !!1 -> true
9.4. 단축 평가
9.4.1. 논리 연산자를 사용한 단축 평가
- 논리곱(&&) 연산자는 논리 연산의 결과를 결정하는 두 번째 피연산자를 반환함
- ex) 'cat' && 'dog' // 'dog'
- Truthy 일 때 동작이 필요한 경우 if 문 대체 가능
- 논리합(||) 연산자도 동일, 평가 결과를 결정하는 피연산자를 반환함
- 변수가 null 또는 undefined 일 때 확인 후 참조할 때 사용 가능
var example = null;
var value1 = example.value;
var value2 = example && example.value
- 함수 매개변수에 기본 값을 설정할 때 사용 가능
9.4.2. 옵셔널 체이닝 연산자
- 옵셔널 체이닝 연산자(?.): 좌항의 피연산자가 null 또는 undefined 일 때 undefined 반환, 아닌 경우 계속 실행
9.4.3. null 병합 연산자
- null 병합 연산자(??): 좌항의 피연산자가 null 또는 undefined 일 때 우항의 피연산자 반환, 아닌 경우 좌항의 피연산자 반환
[출처] 모던 자바스크립트, Deep Dive