2010-02-20 41 views
8

Duplicar posible:
Can somebody explain this Javascript method ?¿Por qué esta expresión devuelve verdadero?

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

Cualquier idea de por qué?

+1

me parece como la pieza más sin sentido de código que se ha escrito, a menos que en realidad fue escrito como un desafío para la mente. ¿Dónde lo encontraste? –

+3

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

+0

@Andy E: Lo vi aquí: http://wtfjs.com/page/ 3 –

Respuesta

2

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

no entendía éste en un primer momento, pero supongo que es fácil: primero x se convierte en la función inversa de matrices, entonces se le llama con this === window. Por lo tanto, equivale a window.reverse(). Simplemente lo busqué y reverse() funciona en su lugar, por lo que window.reverse() === window - aunque es potencialmente diferente de antes.

me dieron esta respuesta desde este enlace

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

+6

Al menos enlace a donde lo obtuvo de http://news.ycombinator.com/item?id=1122004 –

+1

Exactamente. '(x = []. reverse)()' es equivalente a 'Array.prototype.reverse.call (null)', lo que significa 'this' for' reverse' será un objeto global, es decir, 'window' – vava

+0

ahora está bien para usted mr.çağdaş – ratty

Cuestiones relacionadas