Number 와 parseInt 의 차이점 ( feat. 코드카타 Day 2 )

앙두·2022년 12월 20일
0

JavaScript

목록 보기
2/21
let a = '-123';

console.log(Number(a)) => NaN
console.log(parseInt(a)) => -123
  • Number(str) 는 괄호 안에 있는 문자열에 숫자 이외의 것이 있으면
    NaN 에러를 뱉는다.
  • parseInt(str) 는 괄호 안에 있는 문자열에 숫자가 아닌 것은 거르고, 숫자인 것들만 추출해준다!
    ( parseInt는 음수, 양수도 구분해줌 )

문제 : reverse 인자에 숫자를 넘겨준다. 그 숫자를 거꾸로 해서 반환해라. (대신 양수면 양수로, 음수면 음수로)

const reverse = x => {

  let result = x.toString().split('').reverse().join('');
  // 3189-

  return console.log(parseInt(result) * Math.sign(x));
}

reverse(-9813);

숫자형인 인자를 문자열로 변환시켜주고,
split 메서드를 사용하여 공백으로 나눠 배열 생성해준 뒤,
그 배열을 reverse, 그리고 배열 내 요소들을 join으로 합쳐준다.
-> 3189- 가 나온다.

음수를 인자로 넘겨줬기 때문에, 반환값도 음수여야 한다. ( = 숫자만 뒤집고 (-)하이픈은 살려야함) 👇🏻

3189-parseInt 하면, 마지막 (-)하이픈은 숫자로 치지 않기 때문에
3189를 출력해줄 것이다.
( + Math.sign(x) 은 x가 양수인지 음수인지 구별해주는 Math 메서드다.
양수면 1을 리턴, 음수면 -1을 리턴한다 )

parseInt(result) * Math.sign(x)
=>
3189 * -1 = -3189


원하던 값이 반환됐다!
profile
쓸모있는 기술자

0개의 댓글