자바스크립트의 모든 값은 타입이있다. 개발자가 의도적으로 타입을 변환하는 것을 명시적 타입 변환, 타입 캐스팅이라 하며 의도와 상관 없이 표현식 평가 도중 변환되는 것을 암묵적 타입 변환, 타입 강제 변환이라 한다.
암묵적 타입 변환 예시
1 + '2' // "12" 문자열 타입으로 변환
0 + ' ' // "0" 문자열 타입으로 변환
true + ' ' // "true"
false + ' ' // "false"
1 - '1' // 0
1 * '10' // 10
1 / 'one' // Mam
+'' // 0
+'1' // 1
+true // 1
if ('str') {} // 문자열은 암묵적으로 true, 불리언 값으로 타입변환
// 3-1
String(1); // "1"
String(NaN); // "NaN
String(true);// "true"
// 3-2
(1).toString(); // "1"
(NaN).toString(); // "NaN"
(true).toString(); // "true"
// 3-3
1 + ''; "1"
true + ''; "true'
// 4-1
Number('-1'); // -1
Number('10.53'); // 10.53
Number('true'); // 1
// 4-2
parseInt('-1'); // -1
parseFloat('10.53'); // 10.53
// 4-3
+'-1' // -1
+'10.53' // 10.53
// 4-4
'0' * 1; // 0
'10.53' * 1; // 10.53
// 5-1
Boolean('x'); // true
Boolean(''); // false
Boolean({ }); //true
Boolean([ ]); // true
// 5-2
!!'x'; // true
!!''; // true
!!{ }; // true
!![ ]; // true
'cat' && 'dog' // 'dog'
'cat' || 'dog' // 'cat'
var elem = null;
var value = elem?.value;
console.log(value); //undefined
var foo = null ?? "default string";
console.log(foo); //"default string"