
如果您学习过强类型语言,那么您应该理解一定值必须存储在内存中,并为其预先分配了多个字节。例如,为一个数字int 分配4个字节,该数字 等于32位并且可以包含2³²的值,这意味着我们可以用十进制表示从-2 147 483 647到2 147 483647。在JS中使用什么类型的数字?
EcmaScript标准说:Number Value:原始值,对应于双精度64位二进制格式IEEE 754值。也就是说,一个double 占用8个字节的数字 (双精度数字)= 64位(其中分配了1位来表示数字的符号,11位表示阶数,而52-尾数表示小数点后的所有内容)。

值范围:1.7E +/- 308(15位数字)。您可以通过在控制台中打印Number对象的最大允许数目来查看并完整查看此数目, Number.MAX_VALUE这是IEEE754标准的链接:https : //en.wikipedia.org/wiki/IEEE_754如果超出此数目,那么Number将为我们提供一个值 Infinity...

, double?
: 9,007,199,254,740,991 ~9 . , . Number: Number.MAX_SAFE_INTEGER.
, , :

, isSafeInteger():

, , double. , ? , , , int 4 , 8! , V8 Number:

, . int int32 Uint32 ( ±), BigInt. Integer Number, Int32 Uint32 Integer.

gitHub': https://github.com/v8/v8/blob/master/include/v8.h#L3039
V8 C++ 4 . , V8 double 8 . , , .

Performance Tip for JS in v8 Chris Wilsonhttps://www.html5rocks.com/en/tutorials/speed/v8/
. JS — , API . , window.setTimeout(). JavaScript. setTimeout int32, , 2 147 483 647, 9 . setTimout() 2 147 483 648 ( 1 Int32), . JS . .
P.S. , setTimeout 25 . , .