[JS] IE에서 Math.sign / isNaN 함수 처리

IE에서 Math.sign과 isNaN 함수가 작동하지 않는다.

swiperjs 플러그인을 사용하는데 내부에 위 함수들이 포함되어 있어서 IE에서 오류가 발생했다. (자바스크립트 플러그인을 쓰다보면 IE는 호환이 안되는 경우가 종종 있다.)

그래서 IE까지 크로스브라우징을 원하면 같은 기능을 하는 함수를 만들어줘야한다.

※ NaN : Not a Number (숫자가 아님)

1. Math.sign

Math.sign 함수는 숫자가 음수인지 양수인지 판별해주는 기능을 한다.

반환값은 -1, -0, 0, 1, NaN 이렇게 5개인데 -0이나 0이나 같은 값이고 NaN일 경우는 예외처리를 위한 것이니 -1, 0, 1 이렇게 3개의 값을 반환하는 함수만 만들어줘도 대부분 잘 작동할 것 같다.

function customMathSign(n) {
  if( n > 0 ) return 1;
  else if( n < 0 ) return -1;
  else return 0;
}

2. isNaN

isNaN 함수는 숫자가 맞는지 아닌지 판별해주는 기능을 한다.

인수가 숫자면 false를 반환하고 숫자가 아니라면 true를 반환한다.

typeof를 사용해 간단하게 숫자인지 아닌지 체크해볼 수 있다.

typeof를 사용하면 숫자일 경우 값은 number이다.

함수의 뜻이 is not a number(숫자가 아니다)이기 때문에 숫자일 경우 true가 아니라 false인 점을 기억하자.

function customIsNaN(n) {
  if( typeof(n) === 'number ) {
    return false;
  } else {
    return true;
  }
}