함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환되는데
이런 과정을 "형 변환 (type conversion)"이라고 함
문자형으로 변환
이는 문자형의 값이 필요할 때 일어나는데 alert 메서드는 변수로 문자형을 받기에
alert(value)에서 밸류는 문자형이어야한다. 다른 타입의 값을 받으면
자동으로 값을 문자형으로 바꿔준다.
let value = true;
alert(typeof value); // boolean
value = String(value); // 변수 value엔 문자열 "true"가 저장됩니다.
alert(typeof value); // string
숫자형으로 변환
이는 수학과 관련된 함수와 표현식에서 자동으로 일어나는데
넘버 타입이 아닌 값에 나누기 / 를 적용하면 작동한다
alert( "6" / "2" ); // 3, 문자열이 숫자형으로 자동변환된 후 연산이 수행됩니다.
Number(value)함수를 이용하면 값을 넘버타입으로 명시해서 변환도 가능
let str = "123";
alert(typeof str); // string
let num = Number(str); // 문자열 "123"이 숫자 123으로 변환됩니다.
alert(typeof num); // number
또한 숫자가 아닌 값들을 넘버 타입으로 바꾸려고하면 NaN (not a number)이 결과로 나온다
let age = Number("임의의 문자열 123");
alert(age); // NaN, 형 변환이 실패합니다.
이외에 특정 값을 넘버 타입으로 바꿀 때 적용되는 규칙이 있는데
전달받은 값형 변환 후
undefined | NaN |
null | 0 |
true and false | 1 과 0 |
string | 문자열의 처음과 끝 공백이 제거됩니다. 공백 제거 후 남아있는 문자열이 없다면 0, 그렇지 않다면 문자열에서 숫자를 읽습니다. 변환에 실패하면 NaN이 됩니다. |
불린형으로 변환
논리 연산을 수행할 때 발생하는데
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를 반환
'JavaScript > Basics' 카테고리의 다른 글
[JavaScript] 비교 연산자 (0) | 2022.03.09 |
---|---|
[JavaScript] 기본 연산자와 수학 (0) | 2022.03.09 |
[JavaScript] 브라우저에서 유저와 상호작용이 가능한 함수 (alert, prompt, confirm) (0) | 2022.03.09 |
[JavaScript] 자료형 - Data Types (0) | 2022.03.09 |
[JavaScript] 변수와 상수 (let, const) (0) | 2022.03.09 |