본문 바로가기
언어

Type Conversions (JavaScript)

by adawn 2025. 3. 10.

출처 : 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