짧은 답: ±9,007,199,254,740,991
JavaScript에서 Number 타입으로 정밀도를 잃지 않고 표현할 수 있는 가장 큰 정수는 ±9007199254740991, 즉 2^53 − 1입니다.
ES6 명세 기준 설명
ECMAScript(ES6) 명세에 따르면, 크기가 2^53을 넘지 않는 모든 양수 및 음수 정수는 Number 타입으로 표현 가능합니다. 참고로 정수 0은 두 가지 표현(+0과 -0)을 가집니다. ES6에서는 이 안전한 최대 정수 값을 Number.MAX_SAFE_INTEGER 상수로 정의하고 있으며, 반대 방향의 최솟값은 Number.MIN_SAFE_INTEGER(−9007199254740991)로 제공됩니다.
주의: 비트 연산자는 다릅니다
비트 연산자(&, |, ^)와 시프트 연산자(<<, >>)는 내부적으로 32비트 정수를 대상으로 동작합니다. 따라서 이런 연산에서 안전한 최대 정수 값은 2^31 − 1, 즉 2147483647입니다.
추가 팁
특정 숫자가 안전한 범위 내에 있는지 확인하려면 Number.isSafeInteger() 메서드를 사용할 수 있습니다. 또한 이 한계를 초과하는 매우 큰 정수를 다뤄야 한다면 ES2020에서 도입된 BigInt 타입을 사용하는 것이 좋습니다.