Comportements JavaScript bizarres de la conférence « Wat » pour CodeMash 2012
Dans la conférence « Wat » stimulante de CodeMash 2012, une série de bizarreries JavaScript particulières ont été mis en évidence. Ces comportements soulèvent des questions sur la manière dont JavaScript fonctionne en coulisses.
Opérateur additif et tableaux
L'opérateur d'addition ( ) pose des défis uniques lorsqu'il est utilisé avec des tableaux :
- [] []: De manière inattendue, la concaténation de deux tableaux vides donne un résultat vide string.
-
[] {}: L'ajout d'un tableau vide et d'un objet donne "[Object]", suggérant que l'opérateur convertit le tableau en primitive.
-
{} []: Ce comportement varie en fonction du moteur JavaScript. Bien que la vidéo suggère que le résultat devrait être 0, certains environnements renvoient "[Object]".
-
{} {} : L'ajout de deux objets donne "Object", indiquant que JavaScript convertit les objets aux chaînes lors de l'exécution d'une addition.
Soustraction de chaînes de nombres
Lorsque des opérateurs sont appliqués à des valeurs de types différents, des particularités surgir:
-
Array(16).join("wat" - 1): Cette expression produit "NaNNaNNaNNaNNaNNaN". JavaScript contraint "wat" - 1 en NaN et le concatène avec la chaîne vide pour former l'argument de jointure.
Comprendre ces bizarreries
Pour comprendre ces comportements, il est essentiel d'approfondir la norme ECMA-262 :
-
[] [] : Les tableaux sont convertis en primitives à l'aide de leur méthode toString(), renvoyant une chaîne vide pour les tableaux vides.
-
[] {} : Les objets sont également convertis en primitives à l'aide de toString(), ce qui donne "[object Object]" pour les objets non vides.
-
{} []: Vide Les instructions de bloc n'ont pas de valeur de retour, ce qui conduit à un retour unaire de 0 pour un tableau (contraint à une chaîne vide).
-
{} {} : L'opérateur convertit les objets en chaînes, ce qui donne " [object Object]".
-
Array(16).join("wat" - 1): NaN résulte de la tentative de soustraction un nombre à partir d'une chaîne.
Instruction d'expression forcée
Dans certains contextes, la syntaxe {} peut être interprétée comme une instruction d'expression plutôt qu'un littéral d'objet, ce qui peut modifier le résultat attendu. résultat des opérations.
Comprendre ces comportements JavaScript bizarres est crucial pour écrire du code robuste et prévisible, garantissant ainsi que vos scripts fonctionnent comme prévu.
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!