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 ?
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!