Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - ++[[]][+[]]+[+[]] == 10
Forum - Javascript - ++[[]][+[]]+[+[]] == 10

Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:06
Martedì, 07/04/2015
Sapevate che il risultato è true?

Codice sorgente - presumibilmente Javascript

  1. ++[[]][+[]]+[+[]] == 10 // true



lol


Il mio blog: https://piero.dev
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 1:03
Martedì, 07/04/2015
lol, pensavo fosse una sfida per il parser di titoli del forum :)

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 1:44
Martedì, 07/04/2015
Anche.


Il mio blog: https://piero.dev
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 17:43
Martedì, 07/04/2015
Esiste una spiegazione?

PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 18:06
Martedì, 07/04/2015
L'operatore che ha precedenza minore è "+", che in questo caso opera sulle stringhe, quindi l'intera espressione è la concatenazione di ++[[]][+[]] e [+[]]. In JavaScript l'operatore "+" unario converte in un numero, e l'array vuoto diventa 0, quindi la seconda espressione è [+[]] == [0] == "'0". Per quanto riguarda la prima, quello che fa è incrementare di uno l'elemento dell'array [[]] il cui indice è [+[]] (ovvero 0). Il motivo per cui fa questa operazione è che non puoi fare ++[], perché ++ opera sulle variabili, e in quel caso la variabile è l'elemento [0] dell'array, che è un oggetto. Ovviamente avrebbe potuto fare (+[] + 1), ma lo scopo era evidentemente non usare i caratteri numerici, altrimenti avrebbe potuto benissimo scrivere "10".

PM Quote