Maison > Article > interface Web > Pourquoi « 040 » est-il égal à 32 en JavaScript ?
Nombre avec un zéro en tête en JavaScript : déchiffrer le mystère
Imaginez rencontrer le code suivant en JavaScript :
var num = 040; console.log(num); // 32
Perplexe, vous pourriez vous demander comment 40 est égal à 32. La réponse réside dans la signification du signe principal zéro.
Dans les premières versions de JavaScript, les zéros non significatifs dans les littéraux numériques dénotaient des nombres octaux (base 8), similaires au 0x non significatif pour l'hexadécimal. Ainsi, "040" a été interprété comme 4x8^1 0x8^0 = 32.
Cependant, cette pratique s'est révélée déroutante et a été rétrogradée en extension facultative dans ECMAScript 3. Le JavaScript moderne applique le mode strict, où les zéros non significatifs dans les littéraux décimaux sont interdits par souci de cohérence.
ECMAScript 6 a introduit de nouvelles façons de représenter les nombres octaux et binaires en utilisant 0o et 0b, respectivement. L'ancien format octal utilisant des zéros non significatifs (010) est devenu une erreur de syntaxe en mode strict.
Par conséquent, le code ci-dessus renverra désormais une erreur de syntaxe en mode strict. Si l'on souhaite analyser des nombres en base 8, on peut utiliser les préfixes 0o recommandés ou employer parseInt comme suit :
parseInt('010', 8); // Returns 8
Pour garantir que les nombres décimaux sont analysés correctement, supprimez les zéros non significatifs ou utilisez parseInt.
En résumé, comprendre la signification historique des zéros non significatifs dans les littéraux numériques de JavaScript est crucial pour comprendre son comportement et interpréter le code correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!