타입 변환
- 타입 변환: 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것
- 원시 값은 변경 물가능한 값immutable value이므로 변경 불가능함
var x = 10;
var str = x + "";
- 위 코드 실행시 자바스크립트 엔진은
x + ''
표현식 평가를 위해 x 변수의 숫자 값을 바탕으로 새로운 문자열 값 '10'을 생성함. 이 값은 일회용이므로 이후 GC에 의해 메모리 해제됨
- 명시적 타입 변환(타입 캐스팅): 개발자의 의도적인 값의 타입 변환
- 암묵적 타입 변환(타입 강제 변환): 자바스크립트 엔진에 의한 값의 자동 타입 변환
- 명시적 타입 변환은 개발자의 의도가 명확하고, 암묵적 타입 변환은 가독성이 더 좋을 수 있음
- 코드 실행 결과를 예측하는 것이 중요
암묵적 타입 변환
- 암묵적 타입 변환 발생 시 자바스크립트 엔진은 원시 타입 중 하나로 타입을 자동 변환
- 종류
- 문자열 타입으로의 변환: + 연산자의 피연산자 중 문자열이 있을 경우. (ex:
1 + '2'
)
- 숫자 타입으로의 변환: 산술 연산자, 비교 연산자, + 단항 연산자(ex:
+'1'
)
- 산술 연산자에 의한 변환 시 빈 문자열, 빈 배열, null, false는 0 / true는 1 / 객체, 배열, undefined는 NaN으로 변환됨
- 불리언 타입으로의 변환: 제어문 or 삼항 조건 연산자의 조건식. 조건식 평가 결과 불리언 값이 아닐 경우 자바스크립트 엔진은 Truthy(참으로 평가되는 값)/Falsy(거짓으로 평가되는 값) 값으로 구분하여 암묵적 타입 변환 수행
- Falsy 값: false, undefined, null, 0, -0, NaN, 빈 문자열