본문으로 건너뛰기

Javascript 기초 04 - 타입 변환

· 약 2분
Jeonghun Kim
Frontend Developer
  • 타입 캐스팅(Type Casting) : 명시적으로 타입을 바꾸는 경우

    let a = 26
    let b = String(a)
  • 강제 변환(Coercion) : 암시적으로 타입을 바꾸는 경우

    let a = 26
    let b = 26 + ""

문자열이 아닌 값을 문자열로 변환

let a = true;
a = a.toString()
let b = 26
b = b.toString()

console.log(a) // "true"
console.log(typeof a) // string

console.log(b) // "26"
console.log(typeof b) // string

console.log(Object.prototype.toString.call(a)) // [object String]
console.log(Object.prototype.toString.call(b)) // [object String]

null , undefined 원시값은 타입 캐스팅을 사용할 수 없으니 주의해야 한다.

let a = undefined;  
a = a.toString() // Cannot read property 'toString' of undefined

let b = null;
b = b.toString() // Cannot read property 'toString' of null

타입 캐스팅은 불가능 하나, 강제 변환은 가능하다.

let a = undefined;  
a = a+""
console.log(a) // "undefined"

let b = null;
b = b+""
console.log(b) // "null"

ToNumber

숫자가 아닌 값을 수식 연산이 가능한 숫자 로 변환 한다.

  • true , false , null 은 정해진 숫자를 반환 한다.
let a = true
let b = false
let c = null

console.log(Number(a)) // 1
console.log(Number(b)) // 0
console.log(Number(c)) // 0
  • 문자열이 변환에 실패할 경우 , undefined 의 경우 NaN(Not-A-Number) 을 반환한다.
let a = "26"
let b = "이십육"
let c = undefined
let d = ["1", "2"]
let e = { key: "value" }

console.log(Number(a)) // 26
console.log(Number(b)) // NaN
console.log(Number(c)) // NaN
console.log(Number(d)) // NaN
console.log(Number(e)) // NaN
  • 문자열을 숫자로 변환하는 함수로 parseInt("문자열") 도 있다.

    Number() 는 변환 실패시 즉시 NaN을 반환하지만 parseInt 는 숫자로 시작시 숫자가 끝나는 지점까지 변환 한다.

let a = "26은 한글로 이십육"
let b = "26은 한글로 이십육"
let c = "이십육은 숫자로 26"

console.log(Number(a)) // NaN
console.log(parseInt(b)) // 26
console.log(parseInt(c)) // NaN