Maison > interface Web > js tutoriel > Pourquoi JavaScript produit-il des résultats inattendus dans ces étranges opérations arithmétiques ?

Pourquoi JavaScript produit-il des résultats inattendus dans ces étranges opérations arithmétiques ?

Mary-Kate Olsen
Libérer: 2024-12-24 18:19:14
original
619 Les gens l'ont consulté

Why Does JavaScript Produce Unexpected Results in These Strange Arithmetic Operations?

Comportements JavaScript déroutants dans la conférence « Wat »

La conférence « Wat » pour CodeMash 2012 a mis en évidence certains comportements particuliers en JavaScript, et c'est cela vaut la peine de les explorer pour comprendre ce qui se passe dans les coulisses.

[] []
L'opérateur d'addition ( ) utilisé avec les tableaux vides convertit les opérandes en primitives et les joint. Comme la valeur primitive par défaut des tableaux est une chaîne vide, le résultat de [] [] est une chaîne vide.

[] {}
Les objets en JavaScript ont un toString() méthode qui renvoie "[object Object]" lorsqu'elle est appelée. Ainsi, [] {} donne un objet, en particulier la chaîne "[object Object]".

{} []
Lorsqu'il est utilisé dans une instruction, {} est analysé comme un bloc vide et renvoie donc undéfini. L'opérateur contraint les opérandes non définis à des nombres, ce qui donne 0 pour {} [] (alors que le discours "Wat" mentionne qu'il devrait être NaN).

{} {}
Similaire à {} [], le premier {} est analysé comme un bloc vide, ce qui donne un résultat indéfini. Cependant, l'opérateur ne parvient pas à contraindre la chaîne "[object Object]" (la valeur toString() du deuxième {}) à un nombre, ce qui donne NaN.

Array(16).join ("wat" - 1)
ToNumber() convertit "wat" - 1 en NaN, car soustraire un nombre d'une chaîne entraîne un résultat non numérique valeur. ToPrimitive() convertit ensuite NaN en chaîne "NaN", qui est répétée 16 fois lors de la jonction des éléments du tableau.

Conclusion
Ces comportements apparemment bizarres proviennent des règles de conversion primitives de JavaScript et les méthodes spécifiques associées aux tableaux et aux objets. En comprenant ces mécanismes sous-jacents, vous pouvez éviter des résultats inattendus et exploiter toute la puissance de JavaScript.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal