모던 JavaScript 튜토리얼을 읽고 정리하였습니다.
형 변환
함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환되는데, 이 과정을 형변환(type conversion)
이라고 한다. alert가 전달받은 값의 자료형과 관계없이 이를 문자열로 자동 변환하는 것이나, 수학 관련 연산자가 전달받은 값을 숫자로 자동변환하는 경우가 대표적인 예시이다. 개발자가 직접 원하는 타입으로 변환할 때에는 명시적 형 변환
이라고 한다.
이 파트에서는 원시형 타입의 형 변환
에 대해서만 다룰 것이며, 객체의 형 변환은 추후에 배울 것이다.
문자형으로 변환
문자형으로의 형 변환
은 문자형의 값이 필요할 때 발생하며, alert 메서드
는 매개변수로 문자형의 값을 받으므로. 매개변수로 다른 형태의 값을 주게 되면 문자형으로 자동 변환된다.
String(value)
함수를 호출하여 전달받은 값을 개발자가 직접 문자열로 변환할 수도 있다.
let value = true;
alert(typeof value); // boolean
value = String(value);
alert(typeof value); // String
숫자형으로 변환
숫자형으로의 변환
은 수학과 관련된 함수와 표현식에서 자동으로 일어난다.
alert("6"/"2"); // 3, 문자열이 숫자형으로 자동변환된 후 연산이 수행된다.
Number(value)
함수를 사용하면 주어진 값을 숫자형으로 명시해서 변환할 수가 있다.
let str = "123";
alert(typeof str); // string
let num = Number(str);
alert(typeof num); // number
한편, 숫자 이외의 글자가 들어있는 문자열을 숫자형으로 변환하려고 하면 실패하여 연산결과가 NaN
이 된다.
let age = Number("임의의 문자열 1234");
alert(age); // NaN
전달받은 값 | 형 변환 후 |
---|---|
undefined |
NaN |
null |
0 |
true and false |
1 과 0 |
string |
문자열의 처음과 끝 공백이 제거됩니다. 공백 제거 후 남아있는 문자열이 없다면 0 , 그렇지 않다면 문자열에서 숫자를 읽습니다. 변환에 실패하면 NaN 이 됩니다. |
alert(Number(" 123 ")); // 123
alert(Number("123z")); // NaN
alert(Number(true)); // 1
alert(Number(false)); // 0
alert(Number(null)); // 0
alert(Number(undefined)); // NaN
불린형으로 변환
불린형 변환
은 논리 연산을 수행할 때 발생하며, Boolean(value)
함수를 통해 명시적 형 변환도 가능하다.
불린형으로 변환 시 적용되는 규칙은 다음과 같다.
- 숫자 0, 빈 문자열, null, undefined, NaN과 같이 직관적으로 비어있다고 느껴지는 값들은 false가 된다.
- 그 외의 값들은 모두 true가 된다.
alert(Boolean(1)); // true
alert(Boolean(0)); // false
alert(Boolean("hello")); // true
alert(Boolean("")); // false
문자열 “0”은 true이다. 또한 공백이 있는 문자열도 비어있지 않는 문자열이기 때문에 true이다.
alert(Boolean("0")); // true alert(Boolean(" ")); // true
Comments