JavaScript Number의 isInteger() vs. isSafeInteger() vs. isFinite()

Number.isInteger() , Number.isSafeInteger()Number.isFinite() 의 차이점을 알고 싶습니까? 아래 비교표를 확인하십시오.

어느 것을 사용해야 하는지는 다음과 같습니다.
  • 소수점 이하 자릿수를 허용하고 범위를 벗어난 정수를 허용하려고 합니다 => Number.isFinite()
  • 소수를 거부하지만 범위를 벗어난 정수는 허용하려고 합니다 => Number.isInteger()
  • 범위를 벗어난 정수뿐만 아니라 소수도 거부하려고 합니다(범위를 벗어난 경우 아래 표 참조) => Number.isSafeInteger()
  • Number.isFinite()는 숫자로 절대 허용하지 않는 항목을 허용하지 않고 가장 덜 제한적입니다. Number.isSafeInteger()는 가장 제한적이며 사용 사례에 적합한 선택일 수도 있고 아닐 수도 있습니다.

    비교표



    그들은 모두 숫자가 아닌 모든 유형과 함께 Infinity , BigIntNaN 를 거부합니다. 차이점이 강조 표시됩니다.


    실험하려는 경우 해당 테이블을 만드는 데 사용한 코드는 다음과 같습니다.

    const table = [
      // From most negative to most positive
      -Infinity,
      Number.MIN_VALUE,
      Number.MIN_SAFE_INTEGER,
      -1.0000000000000001,
      -1.000000000000001,
      -1.59,
      -1.0,
      -1,
      -0.1,
      -0,
      0,
      0.1,
      1,
      1.0,
      1.59,
      1.000000000000001,
      1.0000000000000001,
      Math.pow(2, 53),
      Math.pow(2, 53) - 1,
      Number.MAX_SAFE_INTEGER,
      Number.MAX_VALUE,
      Infinity,
    
      // Maybe?
      BigInt(9007199254740991),
      Number.EPSILON,
      Math.PI,
    
      // None of these are gonna pass
      NaN,
      '1',
      null,
      undefined,
      false,
      true,
      [],
      {}
    ].reduce((acc, val) => {
      acc.push({
        value: val,
        'Number.isInteger()': Number.isInteger(val),
        'Number.isSafeInteger()': Number.isSafeInteger(val),
        'Number.isFinite()': Number.isFinite(val)
      })
      return acc
    }, []);
    
    console.table(table)
    

    좋은 웹페이지 즐겨찾기