Maison > Article > interface Web > Pourquoi [[]][ []] [ []] renvoie-t-il « 10 » en JavaScript ?
Dévoilement du mystère derrière la valeur de retour de [[]][ []] [ []]
Dans le domaine de JavaScript, l'expression énigmatique [[]][ []] [ []] en laisse beaucoup perplexes avec sa valeur de retour apparemment absurde : "10". En plongeant dans les profondeurs du processus d'évaluation de JavaScript, nous nous lançons dans un voyage pour déchiffrer ce puzzle.
Dans un premier temps, décomposons l'expression :
++[[]][+[]] + [+[]]
Expansion [[]] [ []]
En JavaScript, l'expression [] est évaluée à 0. En effet, les tentatives de conversion de l'opérande en nombre et un tableau vide sont contraints à une chaîne, qui est ensuite convertie en un nombre donnant 0.
En remplaçant [] par son équivalent, on obtient :
++[[]][0] + [+[]]
Évaluer [[]][0]
L'opérateur incrémente son opérande de un, donc [[]][0] est équivalent à ([[]][0]) 1. Puisque [[]][0] récupère le premier élément du tableau vide, il renvoie un autre tableau vide. Ainsi, ([[]][0]) est équivalent à [], dont nous savons que donne 0.
Simplifiant l'expression restante
En simplifiant davantage, nous obtenons :
1 + [+[]]
La magie de coercition de JavaScript
Les règles de coercition de JavaScript entrent en jeu lorsqu'il s'agit de l'ajout d'un tableau et d'un nombre. Tout d'abord, le tableau est contraint à une chaîne ("0"), puis le nombre est contraint à une chaîne ("1"). La concaténation de chaînes donne le résultat final :
console.log("1" + "0") // "10"
Contexte supplémentaire
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!