자바스크립트에서 타입 변환(Type Conversion)은 매우 중요한 개념이다. 자바스크립트는 동적 타입 언어이기 때문에, 타입이 자동으로 또는 명시적으로 바뀌는 경우가 자주 발생한다.
String(), Number(), Boolean() 같은 함수 사용자바스크립트는 표현식의 문맥에 따라 값을 자동으로 변환한다. 가장 흔한 예는 연산자(+, ==, 조건문 등)에서 발생한다.
'5' + 1 // "51" → 문자열로 변환됨
'5' - 1 // 4 → 숫자로 변환됨
'5' * '2' // 10 → 숫자로 변환됨
+ 연산자는 하나라도 문자열이면 전체를 문자열로 변환-, *, /)는 모두 숫자 변환을 시도!!"hello" // true
!!0 // false
!! undefined // false
false가 되는 값):| 값 | 의미 |
|---|---|
false | 거짓 |
0, -0 | 숫자 0 |
"" | 빈 문자열 |
null | 없음 |
undefined | 정의되지 않음 |
NaN | 숫자가 아님 |
나머지 모든 값은 true로 간주된다.
==) 시의 암시적 변환'5' == 5 // true (문자열 → 숫자 변환)
false == 0 // true
null == undefined // true
[] == '' // true
[] == 0 // true
[1] == 1 // true
혼란스럽기 때문에 실제 개발에서는 항상
===사용 권장!
명시적 타입 변환은 개발자가 의도적으로 타입을 바꾸는 것이다.
String(123) // "123"
(123).toString() // "123"
Number("42") // 42
parseInt("42px") // 42
parseFloat("3.14") // 3.14
+true // 1
+"123.45" // 123.45
Boolean(0) // false
Boolean("hello") // true
!!값패턴도 많이 사용된다:!!"hello"→true
| 표현식 | 결과 | 이유 |
|---|---|---|
null + 1 | 1 | null → 0으로 변환 |
undefined + 1 | NaN | undefined → NaN 변환 |
true + false | 1 | true → 1, false → 0 |
[] + {} | "[object Object]" | 배열이 문자열로 변환됨 |
{} + [] | 0 또는 "[object Object]" | 파싱 방식에 따라 다름 |
| 변환 종류 | 암시적 예시 | 명시적 예시 |
|---|---|---|
| 문자열 변환 | '3' + 1 → '31' | String(123) |
| 숫자 변환 | '5' * 2 → 10 | Number("42") |
| 불리언 변환 | !!"hello" → true | Boolean(null) |
Number(), 문자열 변환엔 String() 또는 .toString(), 불리언은 !! 또는 Boolean()===(엄격한 동등) 사용 → 예기치 않은 암시적 변환 방지undefined와 null 비교는 조심 (예: undefined == null은 true, ===은 false)