형변환에는 문자열 변환, 숫자 변환, 부울 변환이 있다.
객체에서 원시타입으로의 형변환도 있지만, 그 부분은 뒤에서 더 공부를 하고 정리해 볼 것이다.
문자열 변환은 문자열 형식의 값이 필요할 때 사용한다.
let result = true; console.log(typeof result); // "boolean" let str = String(result); console.log(str); // "true" console.log(typeof str); // "string" let result2 = 7889; console.log(typeof result2); // "number" let str2 = String(result2); console.log(str2); //"7889" console.log(typeof str2); // "string"
Number 객체는 숫자 값으로 작업을 할 수 있도록 해주는 wrapper 객체로
Number() 생성자를 통해 사용할 수 있다.문자열로 감싸져있지만, 안에 값이 숫자일 경우 Number()를 통해 숫자로 타입이 변경되는 것을 확인할 수 있다.
let str1 = '12345'; let num1 = Number(str1); console.log(num1); // 12345 console.log(typeof num1); // "number" let str2 = '숫자12345'; let num2 = Number(str2); console.log(num2); // NaN console.log(typeof num2); // "number"
하지만 num2의 경우 Number()로 형변환을 하면서 바로 NaN이라는 결과가 출력된다. NaN은 Not a Number의 약자로 '숫자가 아님'을 나타낸다.
한가지 더 알아두면 좋은 점은 숫자 변환은 수학 함수, 표현식에서 자동으로 변환된다.
let result = "8" / "4"; //2
숫자로 변환했을 때 나오는 값들에 대해서 알아보면
Number(undefined); // NaN Number(null); // 0 Number(true); //1 Number(false); // 0 Number(""); //0 Number("7895"); //7895 Number("hello123"); //NaN Number(""); // 0
눈여겨 봐야될 결과는 undefined의 경우 NaN이 되고, null의 경우 0이 된다.
값이 있으면 true, 없으면 false라고 생각하면 된다.
0, 빈 문자열, null, undefined, NaN, false의 경우는 false로 값이 나오고, 그 외의 경우는 true가 된다.
Boolean(0); // false Boolean(""); // false Boolean(null); // false Boolean(undefined); // false Boolean(NaN); // false Boolean(false); // false Boolean("0"); // true Boolean(123); // true Boolean("false"); // true Boolean(" "); // true