Maison >interface Web >js tutoriel >Pourquoi JavaScript produit-il des résultats inattendus en matière de concaténation et d'arithmétique de chaînes et de nombres ?

Pourquoi JavaScript produit-il des résultats inattendus en matière de concaténation et d'arithmétique de chaînes et de nombres ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 01:54:12617parcourir

Why Does JavaScript Produce Unexpected Results in String and Number Concatenation and Arithmetic?

Les bizarreries de JavaScript dévoilées : expliquer les bizarreries du discours « Wat »

Tableau vide Tableau vide : la concaténation du vide

Lors de l'ajout de deux tableaux vides, JavaScript les convertit d'abord en primitives. Dans ce cas, la valeur par défaut d'un tableau est une chaîne vide, le résultat est donc la concaténation de deux chaînes vides : une chaîne vide.

Objet tableau vide : la désinfection des objets

La conversion du tableau vide en primitive (chaîne vide) et de l'objet en primitive (sa représentation sous forme de chaîne, "[object Object]") entraîne la concaténation d'un vide chaîne et une représentation d'objet, donnant "[objet objet]."

Tableau vide d'objet : l'arithmétique non conventionnelle de JavaScript

Contrairement à la vidéo, dans le JSFiddle fourni, le résultat de {} [] est [Object] au lieu de 0. Cet écart se produit car le bloc vide {} est interprété comme une instruction de bloc, qui est évaluée comme vide. L'opérateur unaire convertit la valeur vide en nombre, ce qui donne 0. Cependant, puisque vous l'utilisez dans un argument de fonction, l'instruction est forcée d'être interprétée comme une instruction d'expression. Cela provoque l'analyse de {} comme un littéral d'objet vide au lieu d'un bloc vide, conduisant à [Object].

Objet Objet : une sortie incompatible

Le résultat of {} {} devrait être "object Object", mais le JSFiddle affiche un résultat différent. Cet écart est probablement dû au comportement spécifique à l'implémentation de JavaScript où le résultat de l'ajout de deux objets à une chaîne peut varier.

Array(16).join("wat" - 1): NaN Propagation

La chaîne d'entrée de cette expression est "NaN-1", qui est évaluée à NaN. Lorsque JavaScript tente de concaténer "NaN" avec les éléments de chaîne vides du tableau, le résultat est toujours NaN selon l'algorithme de concaténation.

"wat" 1 vs. "wat" - 1 : La chaîne vs . Conversion de nombres

Dans "wat" 1, JavaScript convertit 1 en chaîne, ce qui donne "wat1". D'un autre côté, dans "wat" - 1, il tente de convertir "wat" en nombre, ce qui donne NaN. Étant donné que l'opérateur de concaténation nécessite une chaîne comme premier argument, NaN est reconverti en chaîne, ce qui entraîne la répétition de "NaN".

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!

Déclaration:
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
Article précédent:Larguer la sourisArticle suivant:Larguer la souris