07/04/15 16:06
ZioCrocifisso
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".
aaa