Si ha estudiado lenguajes fuertemente tipados, debe comprender que un determinado valor debe almacenarse en la memoria con un número de bytes preasignado para él. Por ejemplo, se int
asignan 4 bytes para un número , que es igual a 32 bits y puede contener valores 2³², lo que significa que podemos expresar en el sistema decimal de -2 147 483 647 a 2 147 483 647. ¿Qué tipo de número se usa en JS?
El estándar EcmaScript dice que Valor numérico: valor primitivo correspondiente a un valor IEEE 754 de formato binario de 64 bits de doble precisión. Es decir, un número double
( número de doble precisión) que ocupa 8 bytes = 64 bits (de los cuales se asigna 1 bit para indicar el signo de un número, 11 bits para el pedido y 52 - mantisa, todo después del punto decimal).
Rango de valores: 1,7E +/- 308 (15 dígitos). Puede comprobar y ver este número en su totalidad imprimiendo el número máximo permitido del objeto Number en la consola. Number.MAX_VALUE
Aquí hay un enlace al estándar IEEE754: https://en.wikipedia.org/wiki/IEEE_754 Si va más allá de este número, Number nos dará un valor 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 . , .
Gracias a todos, suscríbete a mi página VK y únete a nuestro grupo de fanáticos del desarrollo frontend