2010-02-20 5 views
8

Possible en double:
Can somebody explain this Javascript method ?Pourquoi cette expression renvoie-t-elle true?

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

Toute idée pourquoi?

+1

Il me semble que la pièce la plus inutile code jamais écrit, à moins qu'il a été écrit comme un casse-tête. Où l'as tu trouvé? –

+3

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

+0

@Andy E: Je l'ai vu ici: http://wtfjs.com/page/ 3 –

Répondre

2

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

ne comprenions pas celui-ci au début, mais je suppose qu'il est facile: tout d'abord x devient la fonction inverse des tableaux, il est appelé avec this === window. Donc, cela revient à window.reverse(). Il suffit de regarder, et inverse() fonctionne en place, donc window.reverse() === window - même si elle est potentiellement différente d'avant.

J'ai eu cette réponse de ce lien

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

+6

Au moins un lien vers l'endroit où vous l'avez obtenu à partir de http://news.ycombinator.com/item?id=1122004 –

+1

Exactement. '(x = []. reverse)()' est équivalent à 'Array.prototype.reverse.call (null)', ce qui signifie 'this' pour' reverse' sera un objet global, ie 'window' – vava

+0

maintenant son ok pour vous mr.çağdaş – ratty

Questions connexes