[모던 자바스크립트 정리] 타입 변환

SOLEE_DEV·2021년 8월 3일
0

Javascript

목록 보기
10/19

타입 변환

개발자가 의도적으로 값의 타입을 변환하는 것은 명시적 타입 변환 또는 타입 캐스팅이라고 하고, 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것은 암묵적 타입 변환 또는 타입 강제 변환이라고 한다.

명시적 타입 변환 예시

let num = 10;
let str = x.toString();

console.log(typeof str) // string;

암묵적 타입 변환 예시

let num = 10;
let str = num + ' ';

console.log(typeof str) // string;

타입 변환은 기존 원시 값을 직접 변경하는 것이 아니라,
기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것

암묵적 타입 변환

자바스크립트 엔진이 표현식을 평가할 때 개발자의 의도와 상관없이 코드의 문맥을 고려하여 암묵적으로 데이터 타입을 강제 변환하는 것

'10' + 2 // -> '102'
5 * '10' // -> 50
!0 // -> true

암묵적 타입 변환 발생시 문자열, 숫자, 불리언과 같은 원시 타입 중 하나로 타입을 자동 변환

1) 문자열 타입으로 변환

1 + '2' // -> '12'
`1 + 1 = ${1 + 1}`
    • 연산자는 피연산자 중 하나 이상이 문자열이므로 문자열 연결 연산자로 동작
  • 문자열 연결 연산자의 역할은 문자열 값을 만드는 것이므로 문자열 타입으로 압묵적 타입 변환
  • 템플릿 리터럴의 표현식 삽입은 표현식 평가 결과를 문자열 타입으로 변환

2) 숫자 타입으로 변환

1 * '2' // -> 2
1 - '1' // -> 0
1 / 'one' // -> NaN
'1' > 0 // true
+'1' // 1
+null // -> 0
+undefined // -> NaN
  • 산술 연산자의 모든 피연산자는 코드 문맥상 모두 숫자 타입으로 인식
  • 비교 연산자는 피연산자들을 모두 숫자 타입으로 인식
    • 단항 연산자는 피연산자가 숫자 타입의 값이 아니면 숫자 타입의 값으로 타입 변환

빈 문자열(''), 빈 배열([]), null, false는 0으로, true는 1로 변환된다.
객체와 빈 배열이 아닌 배열, undefined는 변환되지 않아 NaN이 됨

3) 불리언 타입으로 변환

profile
Front-End Developer

0개의 댓글