Maison >interface Web >js tutoriel >Pourquoi « [[]][ []] [ []] » est-il égal à 10 en JavaScript ?

Pourquoi « [[]][ []] [ []] » est-il égal à 10 en JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-15 10:29:02701parcourir

Why does

Explorer l'énigme de "[[]][ []] [ []]" en JavaScript

Les développeurs JavaScript peuvent se retrouver perplexes par l'expression " [[]][ []] [ []]" car elle donne le résultat inattendu de "10". Examinons le processus derrière ce calcul énigmatique pour en démêler les subtilités.

Le décomposer

Si nous décomposons l'expression, elle se lit comme suit :

++[[]][+[]]
+
[+[]]

En JavaScript, les éléments d'un tableau peuvent être convertis en nombres à l'aide de l'opérateur « ». Plus précisément, [] === 0. Cela contraint les tableaux en chaînes vides, ce qui donne "" === 0.

Simplifier le calcul

Avec cette compréhension, nous pouvons simplifier l'expression comme suit :

++[[]][0]
+
[0]

L'accès au premier élément d'un tableau, [[]][0], renvoie l'intérieur tableau. En raison des références, nous l'appellerons A pour éviter toute confusion.

Incrémentation et conversion

L'opérateur incrémente son opérande de un et renvoie le résultat incrémenté. Par conséquent, [[]][0] est équivalent au nombre (A) 1.

Concaténation de chaînes

Nous pouvons encore simplifier :

(+[] + 1)
+
[0]

Tout d'abord, [] est forcé dans la chaîne "0". Ensuite, [] donne 1. Enfin, "1" est concaténé avec "0" à l'aide de , car les tableaux peuvent être joints avec , ce qui donne 10.

Techniques

En coulisses, le processus de contrainte de [] vers 0 implique plusieurs spécifications références :

  • Opérateur unaire : Convertit son opérande en nombre, en le forçant d'abord à une chaîne ("").
  • Conversion de nombre ( ToNumber()): Contraint le tableau ([]) en une chaîne ("").
  • Conversion de valeur primitive (ToPrimitive()) : En mode String, utilise la méthode [[DefaultValue]] de l'objet.
  • [ [DefaultValue]] : Appelle la méthode [[Get]] avec argument "toString".
  • Méthode toString du tableau : Invoque la méthode [[Join]], qui donne "" pour [].

Conclusion

Grâce à cette analyse étape par étape, nous avons mis en lumière les mécanismes derrière le expression déroutante " [[]][ []] [ []]" en JavaScript. Son exécution implique la coercition, l'incrémentation et la concaténation, révélant finalement le parcours logique qui mène au résultat surprenant de « 10 ».

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