출처 : https://javascript.info/type-conversions
Type Conversions
javascript.info
형 변환
대부분의 경우 , 연산자와 함수는 전달받은 값을 자동으로 올바른 타입으로 변환해줌.
예를 들어, alert은 어떤 값이든 문자열로 자동 변환하여 보여줌.
수학 연산 또한 값을 숫자로 변환함.
때로는 값이 기대하는 타입으로 명시적으로 변환되어야 할 떄도 있음.
객체는 아직 다루지 않음
이 챕터에서는 객체에 대해서는 다루지 않음.
지금은 원시(primitive) 값에 대해서만 이야기함.
나중에 객체에 대해 배운 후 "객체 -> 원시 값으로의 변환 (Object to primitive conversion )"챕터에서 객체가 어떻게 동작하는지 살펴볼 것임.
문자열 변환
문자열 변환은 값의 문자열 형태가 필요할 떄 발생함.
예를 들어 alert(value)는 값을 보여주기 위해 내부적으로 문자열로 변환함.
또한 string(value) 함수를 호출하여 값을 문자열로 변환할 수 있음.
let value = true;
alert(typeof value); // "boolean"
value = String(value); // 이제 value는 문자열 "true"가 됩니다.
alert(typeof value); // "string"
문자열 변환은 대부분 직관적임. 예를 들어 false는 "false"가 되고 null은 "null"이 됨.
숫자 변환
수학 함수와 표현식에서의 숫자 변환은 자동으로 이루어짐.
예를 들어, 숫자가 아닌 값에 대해 나눗셈 (/) 연산자가 사용될 때 :
let str = "123";
alert(typeof str); // "string"
let num = Number(str); // 숫자 123이 됩니다.
alert(typeof num); // "number"
문자열 기반 소스 (예: 텍스트 폼)에서 값을 읽어오고 숫자가 입력되기를 기대할 때 , 명시적인 변환이 보통 필요함.
만약 문자열이 올바른 숫자가 아니라면 , 그러한 변환의 결과는 NaN이 됨. 예를 들어 :
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN, 변환 실패
숫자 변환 규칙
| 값 (Value) | 변환 결과 (Becomes…) |
| undefined | NaN |
| null | 0 |
| true와 false | 각각 1과 0 |
| string | 시작과 끝의 공백(공백, 탭 \t, 줄 바꿈 \n 등)이 제거됩니다. 남은 문자열이 비어 있으면 결과는 0이 되고, 그렇지 않으면 문자열에서 숫자를 “읽어” 변환합니다. 숫자 읽기에 오류가 있으면 NaN이 됩니다. |
예시 :
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (숫자 읽기 오류, "z"에서 에러 발생)
alert( Number(true) ); // 1
alert( Number(false) ); // 0
여기서 주의할 점 : null과 undefined는 다르게 동작함. null은 0이 되지만 undefined는 NaN이 됨.
대부분의 수학 연산자도 이러한 변환을 수행하며 , 이에 대해서는 다음 챕터에서 살펴봄.
boolean 변환
boolean 변환은 가장 간단한 변환임.
논리 연산 (나중에 조건 검사 등에서 만나게 됨) 에서 발생하며 , Boolean(value) 를 호출하여 명시적으로 수행할 수도 있음.
변환 규칙
직관적으로 "비어있는(empty)" 값들 , 예를 들어 0 , 빈 문자열 , null , undefined , 그리고 NaN은 false로 변환됨.
그 외의 다른 값들은 true가 됨.
예시 :
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
주의 :
숫자 0이 들어간 문자열 "0"는 true 임.
일부 언어 (PHP 등)는 "0"을 false로 취급하지만 , 자바스크립트에서는 비어있지 않은 문자열은 항상 true임.
문자열일 때 0이 true 인 것 숫자일 땐 false를 반환
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // 공백만 있는 문자열도 true (비어있지 않은 문자열은 모두 true)
'언어' 카테고리의 다른 글
| Comparisons (JavaScript) (0) | 2025.03.10 |
|---|---|
| Basic operators, maths (JavaScript) (0) | 2025.03.10 |
| Interaction: alert, prompt, confirm (JavaScript) (0) | 2025.03.10 |
| Data types (JavaScript) (0) | 2025.03.10 |
| Variables (JavaScript) (0) | 2025.03.10 |