공부/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' ]