2010-02-20 13 views
8

Eventuali duplicati:
Can somebody explain this Javascript method ?Perché questa espressione restituisce true?

(x = [].reverse)() === window // true 

Qualsiasi idea del perché?

+1

mi sembra il pezzo più inutile di codice mai scritto, a meno che in realtà è stato scritto come un rompicapo. Dove lo hai trovato? –

+3

dupe: http://stackoverflow.com/questions/2261342/can-somebody-explain-this-javascript-method/2261394#2261394 – bobince

+0

@Andy E: l'ho visto qui: http://wtfjs.com/page/ 3 –

risposta

2

(x=[].reverse)() === window // true

non capiva questo in un primo momento, ma credo che sia facile: prima x diventa la funzione di inversione di array, allora è chiamato con this === window. Quindi ammonta a window.reverse(). Basta guardarlo e reverse() funziona, quindi window.reverse() === window - sebbene sia potenzialmente diverso da prima.

ho avuto questa risposta da questo link

http://news.ycombinator.com/item?id=1122004

+6

Almeno il link dove l'hai ottenuto da http://news.ycombinator.com/item?id=1122004 –

+1

Esattamente. '(x = []. reverse)()' è l'equivalente di 'Array.prototype.reverse.call (null)', che significa 'questo' per' reverse' sarà l'oggetto globale, ovvero 'window' – vava

+0

ora ok per voi mr.çağdaş – ratty

Problemi correlati