타입 변환

shelly·2022년 5월 9일

타입 변환

명시적 타입 변환 (타입 캐스팅)

const num = 10

const str = num.toString() // Number(10) 를 String("10") 으로 명시적 변환

암묵적 타입 변환 (타입 강제 변환)

const num = 10
const str = 10 + '' // Number(10) 를 String("10") 으로 암묵적 변환

명시적 타입 변환

String(1) // "1"
(1).toString() / "1"

Number('0') // 0
parseInt(0) // 0

Boolean(0) // false
Boolean('str') // true

암묵적 타입 변환

10 + '' // "10"
0 + '' // "0"
1 + '' // "1"
-1 + '' // "-1"
true + ''// "true"
false + '' // "false"
NaN + '' // "NaN"

[] + '' // ""
[1, 2] + '' // "1,2"
({}) + "" // "[object Object]"

숫자 타입 변환

10 - "3" // 7
5 * "10" // 50
"10" * 5 // 50
"10" / 5 // 2
"ten" * 5 // NaN

+true // 1
+false // 0

+null // 0
+undefined // NaN

+'' // 0
+[] // 0
+[1, 2] // NaN
+{} // NaN

불리언 타입 변환

!!1 // true
!!0 // false

!![] // false
!![1,2]

!!'' // false
!!'1' // true
!!'0' // true
!!'text' // true

!!{} // true
!!NaN // false
!!null // false
!!undefined // false

  • 공부하다가 의문이 생긴 것
({}) + '' // "[object Object]"
{} + '' // 0
  • ({}) + ''
    • ({}) 는 object로 인식한다.
    • 뒤에 + ''가 있기 때문에 ({})를 string으로 변환한다.
    • '[object Object]' + '' 와 동일한 의미이다.
  • {} + ''
    • {}는 빈 코드블록으로 인식한다.
    • 따라서 {}를 지나치고 + ''를 실행한다.
    • +''는 숫자형으로 형변환이된다.

아래의 예시를 생각해보면 익숙한 내용이었다. 😂

const getObj = (v) => ({value: v})

타입이 변환되는 과정

https://geonlee.tistory.com/168
이 글에 아주 잘 나와있다!!

== 연산자를 사용할 때 타입체킹 과정

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Equality#%EC%83%81%EC%84%B8_%EC%84%A4%EB%AA%85

0개의 댓글