형 변환 (type conversion)
함수와 연산자에 전달되는 값이 적절한 자료형으로 변환되는 과정 (대부분 변환된다.)
대표적인 예시
alert가 받은 값의 자료형과 관계없이 문자열로 자동 변환하여 보여주는 경우
수학 관련 연산자가 전달받은 값을 숫자로 변환하는 경우
(객체의 형 변환은 나중에 나온다.)
문자형으로 변환
- 문자형의 값이 필요할 때 일어난다.
alert 메서드는 매개변수로 문자형을 받기 때문에
alet(value)에서 value는 문자형이어야 한다.
만약 다른 형의 값을 받으면 자동으로 문자형으로 변환된다.
(String(value) 함수를 호출해 전달받은 값을 문자열로 변환 할 수도 있다.)
let value = true;
alert(typeof value); // boolean
value = String(value); // 변수 value엔 문자열 "true"가 저장
alert(typeof value); // string
false는 문자열 "false"로 null은 문자열 "null" 로 변환
> 문자형 변환은 대부분 예측 가능한 방식으로 일어난다.
숫자형으로 변환
- 수학과 관련된 함수와 표현식에서 자동으로 일어남
> 숫자형이 아닌 값에 나누기를 적용한 경우 등
Number(value) 함수를 사용하면 주어진 값(value)을 숫자형으로 명시해서 변환할 수 있다.
alert('6' / '2') // 3
let str = '123'
console.log(typeof str) // string
let num = Number(str)
console.log(typeof num) // number
문자 기반 폼(form)을 기반으로 숫자형 값을 받는 경우 명시적 변환이 필수!
숫자 외의 글자가 들어있는 문자열을 숫자형으로 변환하려 하면 NaN (Not a Number) 가 된다.
숫자형으로 변환 시 적용되는 규칙
undefined | NaN |
null | 0 |
true and false | 1과 0 |
string | 문자열의 처음과 끝 공백 제거, 공백 후 남은 문자열이 없으면 0, 남은 문자열이 있으면 그 중 숫자 변환, 숫자 외의 문자열이 있으면 NaN |
null과 undefined의 숫자형 변환 시의 결과가 다르다는 것에 주의!
불린형으로 변환
- 논리 연산 수행 시 발생 (논리 연산은 뒤에서 나온다.)
Boolean(value) 를 호출하면 명시적으로 불린의 형 변환 수행 가능.
불린형으로 변환 시 적용되는 규칙
- 숫자 0, 빈 문자열, null, undefined, NaN 과 같이 직관적으로 '비어있다'고 생각되는 값들 >> false
- 그 외는 다 true
alert( Boolean(1) ); // 숫자 1(true)
alert( Boolean(0) ); // 숫자 0(false)
alert( Boolean("hello") ); // 문자열(true)
alert( Boolean("") ); // 빈 문자열(false)
**주의 사항 : 문자열 "0" 은 true 다**
PHP 등 일부 언어는 문자열 "0"을 false로 취급 > 하지만 JS에선 비어 있지 않은 문자열은 언제나 true
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // 공백이 있는 문자열도 비어있지 않은 문자열이기 때문에 true로 변환됩니다.
'Study > JavaScript' 카테고리의 다른 글
class 방식, extends, constructor (0) | 2023.06.13 |
---|---|
[모던 JavaScript] 코어 자바스크립트 - 자바스크립트 기본 - 8. 기본 연산자와 수학 (0) | 2023.05.29 |
[모던 JavaScript] 코어 자바스크립트 - 자바스크립트 기본 - 6. alert, prompt, confirm을 이용한 상호작용 (0) | 2023.03.15 |
[모던 JavaScript] 코어 자바스크립트 - 자바스크립트 기본 - 5. 자료형 (0) | 2023.03.08 |
[모던 JavaScript] 코어 자바스크립트 - 자바스크립트 기본 - 4. 변수와 상수 (0) | 2023.02.23 |