2010-02-20 2 views
8

Можно создать дубликат:
Can somebody explain this Javascript method ?Почему это выражение возвращает true?

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

Любая идея, почему?

+1

Кажется мне, как самый бессмысленный кусок кода когда-либо написанных, если она не была написана как тизер мозга. Где вы его нашли? –

+3

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

+0

@ Andy E: Я видел это здесь: http://wtfjs.com/page/ 3 –

ответ

2

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

Не понял, это один в первом, но я предполагаю, что это легко: первый х становится обратной функцией массивов, то он вызывается с this === window. Таким образом, он составляет window.reverse(). Просто посмотрел на него, и reverse() работает на месте, поэтому window.reverse() === window - хотя он потенциально отличается от предыдущего.

Я получил этот ответ от этой ссылке

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

+6

По крайней мере, ссылка на сайт, где вы его получили http://news.ycombinator.com/item?id=1122004 –

+1

Точно. '(x = []. reverse)()' равнозначно 'Array.prototype.reverse.call (null)', что означает, что 'this' для' reverse' будет глобальным объектом, то есть 'window' – vava

+0

теперь его нормально для вас mr.çağdaş – ratty

 Смежные вопросы

  • Нет связанных вопросов^_^