자바스크립트의 값의 타입을 다른 타입으로 변환하는 것
개발자가 의도적으로 값의 타입을 변환하는 것
let x = 10;
let y = x.toString(); // 숫자를 문자열로 타입 캐스팅
console.log(typeof y, y); // string 10
console.log(typeof x, x); // number 10 <- 값은 바뀌지 않음
문자열 타입으로 변환
String
생성자 함수 사용 (new
키워드 X)Object.prototype.toString
메서드 사용+
사용
숫자 타입으로 변환
Number
생성자 함수 사용 (new
키워드 X)parseInt
, parseFloat
함수 사용 (문자열만 가능)+
사용*
사용
불리언 타입으로 변환
Boolean 생성자 함수 사용 (new 키워드 X)
부정 논리 연산자 !
를 두 번 사용
⇒ 부정 논리 연산자 사용 시 boolean
으로 타입 변환과 동시에 반대값을 반환 → 이를 두 번 사용하면 불리언 타입으로 변환하는 효과
개발자의 의도와는 상관없이 표현식 평가 과정에서 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것
let x = 10;
let y = x + ''; // 숫자 x를 바탕으로 새로운 문자열 생성
console.log(typeof y, y); // string 10
console.log(typeof x, x); // number 10
문자열 타입으로 변환
+
로 동작// 숫자 + 문자열 => 문자열
1 + '2' // "12"
0 + '' // "0"
-0 + '' // "0"
1 + '' // "1"
-1 + '' // "-1"
NaN + '' // "NaN"
Infinity + '' // "Infinity"
-Infinity + '' // "-Infinity"
// 불리언 + 문자열 => 문자열
true + '' // "true"
false + '' // "false"
// null + 문자열 => 문자열
null + '' // "null"
// undefined + 문자열 => 문자열
undefined + '' // "undefined"
// Symbol + 문자열 => @@@@ 타입 에러!!
(Symbol()) + '' // TypeError: Cannot convert a Symbol value to a string
// 객체 타입
({}) + '' // "[object Object]"
Math + '' // "[object Math]"
[] + '' // ""
[10, 20] + '' // "10,20"
(functionO{}) + '' // "function(){}"
Array + '' // "function Array() { [native code] }"
숫자 타입으로 변환
1 - '1' // 0
1 * '10' // 10
1 / 'one' // NaN <- 숫자타입으로 변환할 수 없음
'1' > 0 // true
+
는 피연산자가 숫자 타입의 값이 아닌 경우, 숫자 타입으로 암묵적 타입 변환됨
’’
, 빈 배열[]
, null
, false
는 0으로, true
는 1로 변환undefined
는 변환되지 않음// 단항 연산자 + 문자열 => 숫자
+'' // 0
+'0' // 0
+'1' // 1
+'string' // NaN
// 단항 연산자 + 불리언 => 숫자
+true // 1
+false // 0
// 단항 연산자 + null => 숫자
+null // 0
// 단항 연산자 + undefined => NaN
+undefined // NaN
// 단항 연산자 + Symbol => TypeError
+Symbol() // TypeError: Cannot convert a Symbol value to a number
// 단항 연산자 + 객체 <- 중요!!
+{} // NaN
+[] // 0
+[10, 20] // NaN
+(function(){}) // NaN
불리언 타입으로 변환
자바스크립트 엔진은 조건식의 평가 결과를 불리언 타입으로 암묵적 타입 변환
false
, undefined
, null
, 0
, -0
, NaN
, ‘’
(빈 문자열)if ('') console.log('1');
if (true) console.log('2');
if (0) console.log('3');
if ('str') console.log('4');
if (null) console.log('5');
// 2 4
논리합||
또는 논리곱&&
연산자 표현식의 평가 결과는 언제나 2개의 피연산자 중 어느 한쪽으로 평가되며, 평가는 좌 → 우 방향으로 진행
||
: 두 개의 피연산자 중 하나만 true
로 평가되어도 true
반환