함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환된다.
이런 과정을 " 형 변환 ( type conversion ) " 이라고 한다.
alert 메서드는 매개변수로 문자형을 받기 때문에, alert ( value ) 에서 value는 문자형이어야 한다.
다른 형의 값을 전달받으면 이 값은 문자형으로 자동 변환된다.
String ( value ) 함수를 호출해 전달받은 값을 문자열로 변환 할 수도 있다.
let value = true; alert(typeof value); // boolean value = String(value); // 변수 value에는 문자열 "true"가 저장된다 alert(typeof value); // string
false는 문자열 "false"로, null은 문자열 "null"로 변환되는 것과 같이,
문자형으로의 변환은 대부분 예측 가능한 방식으로 일어난다.
숫자형으로의 변환은 수학과 관련된 함수와 표현식에서 자동으로 일어난다.
숫자형이 아닌 값에 나누기 [ / ] 를 적용한 경우
alert( "6" / "2" ); // 3 - 문자열이 숫자형으로 자동변환된 후 연산 수행
Number ( value ) 함수를 사용하면
주어진 값 ( value ) 을 숫자형으로 명시해서 변환할 수 있다.let str = "123"; alert(typeof str); // string let num = Number(str); // 문자열 "123"이 숫자 123으로 변환 alert(typeof num); // number
문자 기반 폼 ( form ) 을 통해 입력받는 경우에는 ,명시적 형 변환이 필수이다.
숫자 이외의 글자가 들어가 있는 문자열을 숫자형으로 변환하려고 하면 NaN이 된다.
let age = Number("임의의 문자열 123"); alert(age); // 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 ( value ) 를 호출하면 명시적으로 불리언으로의 형 변환을 수행할 수 있다.
alert( Boolean(1) ); // 숫자 1(true) alert( Boolean(0) ); // 숫자 0(false) alert( Boolean("hello") ); // 문자열(true) alert( Boolean("") ); // 빈 문자열(false)
PHP 등의 일부 언어에선 문자열 " 0 " 을 false로 취급한다.
자바스크립트에선 비어 있지 않은 문자열은 true 이다.