Si vous avez étudié des langages fortement typés, vous devez comprendre qu'une certaine valeur doit être stockée en mémoire avec un certain nombre d'octets pré-alloués pour elle. Par exemple, int
4 octets sont alloués pour un nombre , qui est égal à 32 bits et peut contenir 2³² valeurs, ce qui signifie que nous pouvons exprimer dans le système décimal de -2 147 483 647 à 2 147 483 647. Quel type de nombre est utilisé dans JS?
La norme EcmaScript indique que Number Value: valeur primitive correspondant à une valeur IEEE 754 au format binaire 64 bits double précision. Autrement dit, un nombre double
( nombre à double précision) occupant 8 octets = 64 bits (dont 1 bit est alloué pour indiquer le signe d'un nombre, 11 bits pour l'ordre et 52 - mantisse, tout après le point décimal).
Plage de valeurs: 1,7E +/- 308 (15 chiffres). Vous pouvez vérifier et voir ce nombre dans son intégralité en imprimant le nombre maximum autorisé de l'objet Number dans la console. Number.MAX_VALUE
Voici un lien vers la norme IEEE754: https://en.wikipedia.org/wiki/IEEE_754 Si vous dépassez ce nombre, Number nous donnera une valeur 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 . , .
Merci à tous, abonnez-vous à ma page VK et rejoignez notre groupe de fans de développement frontend