
자동 변환되는 경우
alert가 전달받은 값의 자료형과 관계없이 이를 문자열로 자동 변환alert( "6" / "2" ); // 3이 외에, 전달받은 값을 의도를 갖고 원하는 타입으로 명식적 변환하는 경우
String(value) 함수로 변환
let value = true;
alert(typeof value); // boolean
value = String(value);
alert(typeof value); // string
Number(value) 함수로 변환
let str = "123";
alert(typeof str); // string
let num = Number(str);
alert(typeof num); // number
- 숫자형 값을 사용해 무언가를 하려고 하는데, 그 값을 문자 기반 폼(form)을 통해 입력받는 경우엔, 이런 명시적 형 변환이 필수입니다.
- 숫자 이외의 글자가 들어가 있는 문자열을 숫자형으로 변환하려고 하면, 그 결과는
NaN이 됩니다.
| 전달받은 값 | 형 변환 후 |
|---|---|
undefined | NaN |
null | 0 |
true, false | 1, 0 |
string | 문자열 양쪽 끝 공백 제거, 공백 제거 후 남은 문자열이 없다면 0, 있다면 숫자를 읽음, 실패 시 NaN |
alert( Number(" ")); // 0
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN ("z"를 숫자로 변환하는 데 실패)
alert( Number(true) ); // 1
alert( Number(false) ); // 0
Boolean(value) 함수로 변환
논리 연산 수행 시 발생
| 전달받은 값 | 형 변환 후 |
|---|---|
0, null, undefined, NaN, "" | false |
그 외의 값, "0", " " | true |
- "비어있다고" 느껴지는 값들은
false로 변환- 그 외의 값들은
true로 변환- 문자열
"0"과 공백이 있는 문자열" "은truealert( Boolean(0) ); // false alert( Boolean("0") ); // true alert( Boolean(" ") ); // true (공백이 있는 문자열) alert( Boolean("") ); // false (빈 문자열)