JavaScript
JavaScript 프로그래밍 - 타입 변환과 단축 평가
여행하는 개발자(SOO)
2021. 11. 10. 22:36
728x90
타입 변환이란
- 기존의 원시값을 사용하여 다른 타입의 새로운 원시 값을 생성하는 것이다.
- 자바 스크립트의 모든 값은 타입이 있다. 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환이 가능하다.
명시적 타입 변환
- 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환(explicit coercion) 또는 타입 캐스팅(type casting)이라 한다.
let x = 10;
// 명시적 타입 변환
// 숫자를 문자열 타입으로 변환
let str = x.toString();
console.log(typeof str, str); // string 10
// 위에서 말한 것처럼 원시값은 변경 불가능한 값이기 때문에 x의 값에는 영향을 주지 않는다.
console.log(typeof x, x); // number 10
암묵적 타입 변환
- 개발자의 의도와는 상관없이 표현식을 평가하는 도중 자바스크립트 엔진에 의해 자동으로 타입이 변환되는 것
- 이를 암묵적 타입 변환(implicit coercion) 또는 타입 강제 변환(type coercion)이라 한다.
- 암묵적 타입 변환이 발생하면 문자열, 숫자, 불리언과 같은 원시 타입 중 하나로 타입을 자동 변환한다.
let x = 10;
// 암묵적 타입변환
// 숫자타입인 10이 문자열 연결 연산자를 만나 숫자타입 x의 값을 바탕으로 새로운 문자열을 생성한다.
let str = x + '';
console.log(typeof str, str); // string 10
// 암묵적 타입변환도 마찬가지로 변수 x의 값에는 영향을 주지 않는다.
console.log(typeof x, x); // number 10
1.1 문자열 타입으로 변환
1 + '2' // "12"
- 위의 예제의 + 연산자는 피연산자 중 하나 이상이 문자열이기 때문에 문자열 연결 연산자로 동작을 한다.
- 문자열 연결 연산자의 역할은 문자열 값을 만드는 것이다. 그러므로 문자열 연결 연산자의 피연산자는 모두 문자열 이어야 한다.
- 위에서 언급했듯이 자바스크립트 엔진은 문자열, 숫자, 불린 타입으로 암묵적 타입 변환을 하는데 문자열 연결 연산자 표현식을 평가하기 위해 피연산자 중 문자열이 아닌 타입은 문자열로 타입 강제 변환을 한다.
728x90