12 votes

Tableau JavaScript en nombre

Duplicata possible :
Pouvez-vous expliquer pourquoi ++[[]][+[]]+[+[]] = 10

Je me demande quelque chose depuis quelques jours... Je sais que le plus unaire en JavaScript convertit d'abord son opérande en nombre. J'applique + à un tableau vide et j'obtiens le résultat suivant :

+[] == 0

Quand je fais ça :

+[1] == 1

Mais :

+[1,2] == NaN

Les deux dernières choses sont presque claires mais pourquoi le tableau vide est à 0 ? ! Est-ce que c'est lié à :

[] == false

Parfois, ECMAScript me fait beaucoup réfléchir...

alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+[]]+[![]+[]][+[]][+!+[]+!+[]]+' '+(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);

Meilleures salutations !

7voto

dossy Points 677

La forme stringifiée de l'expression vide Array est une chaîne vide :

> [].toString()
""

L'opérateur unaire + se convertit en Number donc, il convertit une chaîne vide en 0 :

> Number("")
0

Cela explique pourquoi +[] == 0 est vrai.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X