Pourquoi ne ++[[]][+[]]+[+[]] de retour de la chaîne “10”?

C'est valide et renvoie la chaîne "10" en JavaScript (d'autres exemples ici):

JS:

console.log(++[[]][+[]]+[+[]])

Pourquoi? Ce qui se passe ici?

  • Commencer par comprendre que +[] jette un tableau vide à 0... puis les déchets d'un après-midi... 😉
  • Connexes stackoverflow.com/questions/4170978/explain-why-this-works .
  • Jetez un oeil à wtfjs.com - elle a pas mal de choses comme ça avec explanatinos.
  • où voulez-vous apprendre ce genre de choses? Quels livres? J'apprends le JS de la SOCIÉTÉ et ils n'enseignent pas ces choses
  • De la même manière que vous venez de faire: quelqu'un a posté à ce sujet quelque part et il m'est arrivé de le lire.
  • Ces arent vraiment des choses que vous devriez utiliser dans la programmation normale. C'est juste un caprice de canard-typage et la conversion implicite. Vous avez probablement vu que vous pouvez utiliser ! pour transformer un nombre en une valeur de type boolean. Vous pouvez utiliser + à son tour un booléen ou une chaîne en un nombre. À partir de là, tout ce que vous devez comprendre est que les valeurs de retour truthy (contraindre à true ou 1) et les valeurs de retour falsey (contraindre à false ou 0)