자바스크립트를 배워보자! 1.데이터타입 - 3)암묵적인 타입 변환

자바스크립트 엔진이 개발자의 의도와 상관없이 코드 문맥을 파악하여 강제적으로 타입 변환을 실행하는 것을 말한다.

1) 문자열 타입으로 변환

  • + 연산자는 피연산자 중 하나 이상의 문자가 포함되면 문자열로 타입을 변환한다.
var a = 1 + '2'
console.log(a) // '12'
console.log(typeof a) // string

var b = 0 + ''
console.log(b) // '0'
console.log(typeof b) // string

var c = true + ''
console.log(c) // 'true'
console.log(typeof c) // string

var d = null + ''
console.log(d) // 'null'
console.log(typeof d) // string

var e = ({}) + ''
console.log(e) // [object Object]
console.log(typeof e) // string

2) 숫자 타입으로 변환

  • +가 아닌 산술 연산자의 경우 숫자타입이 아닌 피연산자를 암묵적으로 숫자로 변환한다.
console.log(6 - '3')  // 3
console.log(6 * '3')  // 18
console.log(6 / '3')  // 2
console.log(6 / '') // NaN
  • 크기를 비교하는 >, < 연산자는 숫자타입이 아닌 피연산자를 암묵적으로 숫자로 변환한다.
console.log('5' > 3) // true
console.log('5' < '3') // false
console.log(3 <= '5') // true 
  • ’+’ 단항 연산자는 숫자타입이 아닌 피연산자를 암묵적으로 숫자로 변환한다.
console.log(+'5') // 5
console.log(+'') // 0
console.log(+'') // NaN

console.log(+true) // 1
console.log(+false) // 0

console.log(+null) // 0

console.log(+undefined) // NaN
console.log(+(Symbol())) // TypeError: Cannot convert a Symbol value to a number

console.log(+{}) // NaN
console.log(+[]) // 0

3) 불리언 타입으로 변환

  • 자바스크립트 엔진은 제어문의 조건을 불리언 타입으로 암묵적으로 타입변환
  • falsy로 평가되는 값 (false, undefined, null, 0, ‘’, NaN)
  var a = false
  var b = undefined
  var c = null
  var d = 0
  var e = ''
  var f = NaN
  
  if(a) console.log('표시안됨')
  if(b) console.log('표시안됨')
  if(c) console.log('표시안됨')
  if(d) console.log('표시안됨')
  if(e) console.log('표시안됨')
  if(f) console.log('표시안됨')