Maison > interface Web > js tutoriel > Pourquoi JavaScript produit-il des résultats inattendus lors de l'ajout de tableaux et d'objets ?

Pourquoi JavaScript produit-il des résultats inattendus lors de l'ajout de tableaux et d'objets ?

Patricia Arquette
Libérer: 2024-12-16 09:37:10
original
621 Les gens l'ont consulté

Why Does JavaScript Produce Unexpected Results When Adding Arrays and Objects?

Comprendre le comportement bizarre des ajouts JavaScript

La conférence "Wat" pour CodeMash 2012 a mis en lumière certains comportements déroutants en JavaScript. Ici, nous approfondissons les mécanismes sous-jacents et expliquons les résultats observés dans l'exemple JSFiddle.

Empty Array Empty Array

[] + []
result: ""
Copier après la connexion

Les chaînes vides résultant de la jonction des tableaux mettent en évidence que l'opérateur convertit les deux opérandes aux primitives, appelant toString() sur les tableaux. Pour les tableaux vides, cette conversion produit une chaîne vide.

Objet tableau vide

[] + {}
result: [Object]
Copier après la connexion

Comme auparavant, la conversion du tableau vide en primitive nous donne une chaîne vide. Cependant, l'objet est contraint dans une chaîne à l'aide de sa méthode toString(), ce qui donne « [Object] ». Cette chaîne est concaténée avec la chaîne vide, produisant "[Object]."

Object Empty Array

{} + []
result: [Object]
Copier après la connexion

Le {} ici est interprété comme un bloc vide, ce qui donne une primitive vide valeur. L'opérateur tente ensuite de convertir l'objet en chaîne via toString(), conduisant à "[Object]". Cependant, ce comportement est une anomalie, car la vidéo suggère que le résultat devrait être 0.

Objet Objet

{} + {}
result: [Object][Object]
Copier après la connexion

Semblable au cas précédent, les objets sont contraints en chaînes. Cependant, comme il n’existe pas d’opérateur unaire, le résultat n’est pas converti en nombre. Au lieu de cela, la concaténation de "[Object]" et "[Object]" est renvoyée.

Array(16).join("wat" - 1)

result: NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
Copier après la connexion

Soustraction d'un nombre à partir d’une chaîne donne NaN. Lorsqu'elle est passée en argument à Array.join, la conversion en chaîne (via toString()) produit "NaN". La méthode join() du tableau concatène ensuite cette chaîne à plusieurs reprises, conduisant au résultat observé.

Conclusion

Ces comportements particuliers proviennent des règles spécifiques de conversion des valeurs en primitives et du comportement de l'opérateur en JavaScript. Bien que certains d'entre eux puissent sembler contre-intuitifs, comprendre les mécanismes sous-jacents permet aux développeurs de mieux anticiper et gérer ces bizarreries dans leur propre code.

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