2010-02-20 14 views
8

Powiel możliwe:
Can somebody explain this Javascript method ?Dlaczego to wyrażenie zwraca wartość true?

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

Każdy pomysł dlaczego?

+1

wydaje mi się najbardziej bezsensowną kawałek kodu kiedykolwiek pisemnej, chyba że faktycznie napisany jako łamigłówków. Gdzie to znalazłeś? –

+3

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

+0

@Andy E: Widziałem to tutaj: http://wtfjs.com/page/ 3 –

Odpowiedz

2

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

nie rozumieli ten jeden na początku, ale myślę, że to jest proste: najpierw x staje się odwrotna funkcja tablic, to nazywa się this === window. Tak więc wynosi ona window.reverse(). Po prostu sprawdziłem, a reverse() działa na miejscu, więc jest potencjalnie inny niż wcześniej.

dostałem taką odpowiedź z tego linku

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

+6

Co najmniej link do tego, skąd go masz: http://news.ycombinator.com/item?id=1122004 –

+1

Dokładnie. '(x = []. reverse)()' jest równoważne 'Array.prototype.reverse.call (null)', co oznacza, że ​​'this' dla' reverse' będzie obiektem globalnym, tzn. 'window' – vava

+0

teraz jest ok dla ciebie mr.çağdaş – ratty

Powiązane problemy