Number.MIN_SAFE_INTEGER 是 JavaScript 中能安全表示的最小整数,值为-9007199254740991,属于 IEEE 754 双精度浮点数 53 位有效整数范围的下界,与 MAX_SAFE_INTEGER 共同定义安全整数区间。

JavaScript 中并没有 Number-MIN_SAFE_INTEGER 这个常量,这是一个常见的拼写错误或混淆写法。正确的常量是 Number.MIN_SAFE_INTEGER(注意中间是下划线 _,且 MIN 和 SAFE 之间**没有反斜杠或连字符**)。
什么是 Number.MIN_SAFE_INTEGER
它表示 JavaScript 中能**安全表示的最小整数**,即不会因浮点数精度丢失而导致运算不准确的下界值。
其值为:
-9007199254740991(即 -(2^53 - 1))。
这个数值与 Number.MAX_SAFE_INTEGER(9007199254740991)对称,共同定义了“安全整数范围”:从 MIN_SAFE_INTEGER 到 MAX_SAFE_INTEGER(含两端)之间的所有整数,在 JavaScript 中都能被**唯一、精确地表示和运算**。
立即学习“Java免费学习笔记(深入)”;
为什么存在“安全整数”的限制
JavaScript 的数字类型基于 IEEE 754 双精度浮点格式(64 位),其中仅 53 位用于表示整数有效位(含 1 位隐含位)。超出该范围后,连续整数无法全部被区分:
- 例如:
9007199254740991 + 1 === 9007199254740992✅ 正确; - 但:
9007199254740992 + 1 === 9007199254740992❌ 实际结果仍是自身(精度丢失)。
同理,负方向上,-9007199254740991 是最后一个能保持相邻整数差为 1 的负数;再小(如 -9007199254740992)就可能跳过某些整数值。
实际使用中的注意事项
-
不要用它做边界校验的唯一依据:比如判断用户输入是否“过大”,需结合业务场景——安全整数范围 ≠ 合理业务范围(如 ID、时间戳可能远超此值,此时应改用
BigInt或字符串处理)。 -
与 Number.isSafeInteger() 配合使用:该方法可准确判断一个数值是否落在安全整数范围内。
例:Number.isSafeInteger(Number.MIN_SAFE_INTEGER)→true;Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1)→false。 - 注意类型:它是一个原始数值(number 类型),不是对象属性或函数,不可调用,也不可修改。
常见错误写法辨析
以下写法均无效或报错:
-
Number-MIN_SAFE_INTEGER→ 被解析为Number - MIN_SAFE_INTEGER(变量未定义,报 ReferenceError); -
Number.MIN- SAFE-INTEGER或Number.MIN_SAFE-INTEGER→ 语法错误(非法标识符或减法运算); -
Number.minSafeInteger(小驼峰)→undefined(标准属性名全为大写下划线)。
正确写法只有一种:Number.MIN_SAFE_INTEGER。









