Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 14.02.2010, 19:50
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Dmitry A. Soshnikov
alert((function(){return 2*3;}).toString() === function () { return 6; }.toString())
Имхо, зависит от реализации. Если браузер пожелает на этапе прекомпиляции посчитать константы, то почему бы и нет.
Ответить с цитированием
  #42 (permalink)  
Старый 14.02.2010, 22:12
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Octane
а да… после операции присваивания мы получим ссылку на функцию. Тогда так:
Метод reverse по завершении алгоритма выполняет return this, а т.к. мы получим на него ссылку в результате операции присваивания, то вызван по этой ссылке он будет в контексте window, и возвратит соответственно window.
Да, но только ещё более правильно не привязываться в объяснении к конкретным "ссылку на reverse", а сказать, что this определяется по тому, как записано выражение вызова. Если слева от точки находится объект типа Reference - то в качестве this будет использована база этого объекта. Если любого другого типа - в качестве this будет использован null. А так как null особого смысла для this не несёт, автоматом подставляется глобальный объект.

Поэтому не важно, куда сохраняется ссылка на reverse (хоть на саму себя), главное, что после присваивания, будет уже не Reference type, и поэтому, this === global:

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


На примере выше то же самое можно разобрать: Javascript quiz · Perfection kills

Сообщение от Octane
Сбило то, что ([].reverse)() сохраняет контекст
Вот как раз в этом случае, всё ещё объект типа Reference (оператор группировки не вызывает GetValue), а когда мы выполнили присваивание (которое выполняет GetValue), то получили уже объект типа Function, а не Reference. Соответственно, this будет в конечном итоге определён как global.

Вот здесь разбирали: http://javascript.ru/forum/misc/5724...html#post34117

Сообщение от B@rmaley.e><e
Имхо, зависит от реализации. Если браузер пожелает на этапе прекомпиляции посчитать константы, то почему бы и нет.
Да, текущая версия *Monkey делает оптимизацию в этом случае и для первой функции в коде уже будет 6, а не 2 * 3.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 15.02.2010 в 00:49.
Ответить с цитированием
  #43 (permalink)  
Старый 15.02.2010, 01:45
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от x-yuri
ну я, думаю, объявление функций перед использованием ускоряет компиляцию.
Сообщение от Kolyaj
Каким образом? Как парсился весь скрипт до выполнения, так и парсится.
я скорее про какой-нибудь C или типа того. А зачем тогда было такое ограничение? Просто чтобы упростить комплиятор?
Ответить с цитированием
  #44 (permalink)  
Старый 15.02.2010, 07:45
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от x-yuri
А зачем тогда было такое ограничение?
В си? Полагаю, для валидации кода в один проход.
Ответить с цитированием
  #45 (permalink)  
Старый 15.02.2010, 08:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

(не зная, как это делается) так и так можно в один проход: запоминать имена используемых идентификаторов, при этом, находя объявление, помечать их найденными
Ответить с цитированием
  #46 (permalink)  
Старый 15.02.2010, 09:13
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Точно, можно и так.
Ответить с цитированием
  #47 (permalink)  
Старый 15.02.2010, 17:21
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от x-yuri
при этом, находя объявление, помечать их найденными
ключевые слова "при этом"
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #48 (permalink)  
Старый 15.02.2010, 19:23
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

На хабре промелькнуло еще несколько вопросов. Но по сравнению с теми, которые были тут, там просто легкотня.
Ответить с цитированием
  #49 (permalink)  
Старый 16.02.2010, 12:18
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от B@rmaley.e><e
там просто легкотня
из Twitter:
Цитата:
Сообщение от DmitryBaranovsk
@pepelsbey Сайт ещё одно доказательство того, что люди ни хрена не знают JavaScript
Сообщение от pepelsbey
Удивительно, но я понимаю часть этих шуток: http://wtfjs.com/ #wtfjs
Ответить с цитированием
  #50 (permalink)  
Старый 16.02.2010, 12:46
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Octane
http://wtfjs.com/
Там, кстати, и ошибки есть. Например на последней странице:
NaN === 'number' // true
кто-то съел typeof.

А вот
[] == ![] // true
Мне понравилось.

Последний раз редактировалось B@rmaley.e><e, 16.02.2010 в 12:52.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Собрался силами, собираюсь освоить Javascript walker Общие вопросы Javascript 14 20.03.2012 15:17
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43