공부/TIL
230807 TIL - 데이터 타입 변환, Number()와 parseInt()의 차이, .toString()과 +""
ctrs
2023. 8. 7. 23:18
1. String을 Number로 바꿀때, Number()와 parseInt()
둘 모두 문자열을 숫자로 변환하는 함수임은 같지만,
차이점으로는
1) NaN 처리
parseInt
문자열(abc)과 섞여있다면 숫자 부분만 변환하고 나머지 문자는 무시한다.
만약 숫자로 시작하지 않는다면 NaN을 반환한다.
Number
문자열(abc)과 섞여있다면 NaN이 나온다.
let a = parseInt("123abc"); // (문자열의 숫자 부분만 변환)
console.log(a); // 123
let b = parseInt("1a2b3c");
console.log(b); // 1
let c = parseInt("abc123");
console.log(c); // NaN
let d = Number("123abc"); // (문자열 전체 변환, 변환 불가능한 문자 포함)
console.log(d); // NaN
2) 정수와 부동소수점 변환
parseInt
소수점 이하는 무시한다.
Number
정수와 소숫점까지 숫자 타입으로 변환한다.
let a = "123.123";
let b = parseInt(a); // (정수 변환)
console.log(b); // 123
let c = Number(a); // (부동소수점 변환)
console.log(c); // 123.123
3) 진수 변환 지원
parseInt는 진수 변환을 지원해주나
Number는 그런거 없다.
// 2진수 -> 10진수
console.log(parseInt("1000", 2)); // 8
console.log(parseInt("1001", 2)); // 9
console.log(parseInt("1010", 2)); // 10
// 16진수 -> 10진수
console.log(parseInt("2a", 16)); // 출력: 42
2. Number를 String으로 바꿀때
정수 n이 있다고 할때
그 동안 사용했던 메소드 사용법 n.toString()과 n+"" 를 해주는 방식
let a = (123.toString());
console.log(typeof a); // string
let b = (123 + "");
console.log(typeof b); // string
둘의 차이는
.toString()는 메소드를 호출했다는 것과
n+""는 정수 n과 빈 문자열 ""을 더함으로써
자바스크립트의 기본 규칙 "숫자와 문자열을 더하면 그 결과는 문자열이 된다"을 사용한 것
따지고보면 메소드 호출보다 더 간단하다.
그리고 이를 응용해서 .split("")만 붙이면 배열로 만들 수도 있다.
let a = (123 + "").split("");
console.log(a); // [ '1', '2', '3' ]