타입 변환과 값의 불변성
- 원시 값은 불변성의 특징을 가지기 때문에 변수가 가리키는 메모리의 원시 값을 변경하거나 타입을 변경할 수 없습니다. 즉, 타입 변환이란 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것입니다.
암시적 타입 변환 ( implicit coercion )
// 숫자 타입
0 + ""; // "0"
1 + ""; // 1
NaN + ""; // "NaN"
// boolean 타입
true + ""; // "true"
false + ""; // "false"
// null 타입
null + ""; // "null"
// undefined 타입
undefined + ""; // "undefined"
// 객체 타입
({} + ""); // "[object object]"
[10, 20] + ""; // "10, 20"
- 암시적 타입 변환이란 개발자 의도와는 상관없이 자바스크립트 엔진에 의해 값의 타입이 암시적으로 타입이 자동 변환되는 것을 말합니다.
명시적 타입 변환 ( explicit coercion )
String(NaN); // "NaN"
(10).toString(); // "10"
Number("0"); // 0
parseInt("12"); // 10
parseFloat("10.53"); // 10.53
Boolean("x"); // true
Boolean(""); // false
- 명시적 타입 변환이란 개발자 의도에 따라 값의 타입이 다른 타입으로 변환하는 것을 말합니다.
- 명시적 타입 변환 방법은 new를 사용하지 않고 생성자 함수를 호출하거나 빌트인( built-in ) 함수를 이용한 방법이 있습니다.
Truthy / Falsy
- 자바스크립트는 조건식에서 사용하는 Boolean 타입이 아닌 값을 Truthy( 참으로 펴가되는 값 ) 또는 Falsy( 거짓으로 평가되는 값 )으로 구분합니다. 즉, 조건식과 같이 Boolean으로 평가되어야 할 문맥에서 Truthy는 true, Falsy는 false로 암시적 타입 변환됩니다.
Falsy
if (false);
if (undefined);
if (null);
if (0 && -0);
if (NaN);
if ("");
- 위의 값들은 모두 false로 평가되는 값들입니다. 위 값들을 제외하고는 모두 Truthy입니다.
'Programming Language > JavaScript' 카테고리의 다른 글
ES6 객체 리터럴의 확장 기능 (0) | 2022.11.15 |
---|---|
단축평가와 옵셔널체이닝, null 병합 연산자에 대해서 (0) | 2022.11.14 |
자바스크립트 비교 연산자 (0) | 2022.11.14 |
자바스크립트의 데이터 타입 (0) | 2022.11.13 |
자바스크립트의 값의 할당 및 재할당 방식 (0) | 2022.11.12 |