개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 or 타입 캐스팅
개발자의 의도와 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동변환되는 것을 암묵적 타입 변환 or 타입 강제 변환
문자열타입변환
0 + '' // "0"
-0 + '' // "0"
1 + '' // "1"
true + '' // "true"
null + '' // "null"
[10,20[ + '' // "10,20"
숫자타입변환
1 - '1' // 0
1 * '10' // 10
1 / 'one' // NaN
+'' // 0
+'0' // 0
+'1' // 1
+null // 0
+undefined // NaN
불리언타입변환
문자열 타입으로 변환
String 생성자 함수를 new 연산자 없이 호출
Object.prototype.toStrong 메서드 사용
문자열 연결 연산자
String(1); // "1"
String(NaN); // "NaN"
(1).toString(); // "1"
(NaN).toString(); // "NaN"
1 + '' // "1"
NaN + '' // "NaN"
숫자 타입으로 변환
Number 생성자 함수 new 연산자 없이 호출
parseInt, parseFloat함수 사용
단항 산술 연산자 이용
산술 연산자 이용
Number('0') // 0
Number('10.53') //10.53
parseInt('0') // 0
parseFloat('10.53' //10.53
+'0' // 0
+'10.53' //10.53
'0'*1 // 0
'10.53'*1 //10.53
불리언 타입으로 변환
Boolean 생성자 함수 new 연산자 없이 호출
! 부정 논리 연산자 두번 사용
Boolean('x'); // true
Boolean('') // false
!!'x' // true
!!'' // false
논리곱(&&) 연산자와 논리합(||) 연산자는 이처럼 논리 연산의 결과를 결정하는 피연산자를 타입 변환하지 않고 그대로 반환한다. 이를 단축 평가(short-circuit evaluation)라 한다. 단축 평가는 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 말한다.
true || anything // true
false || anything // anything
true && anything // anything
false && anything // false
옵셔널 체이닝 연산자 ?. (&&과 비교), null 병합 연산자 ?? (||과 비교)
→ falsy value가 아니라 null 또는 undefined인 경우에