LINUX.ORG.RU

Ответ на: комментарий от Goury

Thx. Как я понимаю, 2й вариант триггерится после document, 3й после window. А когда триггерится первый?

Deleted
()
Ответ на: комментарий от Deleted

Где триггертися? Что триггерится? Ничего не триггерится. Это ж не феминистка. Просто во втором варианте ты «замыкаешь» (делаешь локальной) переменную window, а в третьем замыкаешь document

makoven ★★★★★
()
Ответ на: комментарий от makoven

А в первом варианте что-то становится локальным?

Или, если мой вопрос некорректен, переформулирую: в чем профит или наоборот проблемность первого варианта по отношению к двум другим?

Deleted
()
Ответ на: комментарий от Deleted

Да никакого профита или проблемности. Разве что варианты 2 и 3 не запустятся в ноде.жс, т.к там нет window

makoven ★★★★★
()
Ответ на: комментарий от Deleted

можно извлечь профит например в байтиках (яндекс/гугл делают в своих треккеррах так)

(function(w) {
// много вызовов w.something
}(window));

ну а в целом это di по сути, можно подсунуть на самом деле не window, но пока не придумал кейс когда нужна подмена именно window.

Noob_Linux ★★★★
()

makoven, Noob_Linux спасибо.

Deleted
()
Ответ на: комментарий от makoven

Я в принципе выше уже сказал тебе и Noob_Linux спасибо, но еще вопрос уточняющий.

Можешь привести какой-то юзкейс, когда будет заметна разница между 2 и 3 вариантом?

Deleted
()
Ответ на: комментарий от Deleted

в чем профит или наоборот проблемность первого варианта по отношению к двум другим

Проблемность первого варианта в том, что ты хардкодишь обращение к document/window, а в последних двух передаёшь явно. Т.о. функции перестают быть зависимы от глобального контекста. В т.ч. можно вместо document/window передать, например их декораторы и т.п.

no-such-file ★★★★★
()
Ответ на: комментарий от Deleted

Не зацикливайся на мелочевке. Тебе еще реактредукс с вебпаком и бабелем осваивать

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 2)
Ответ на: комментарий от no-such-file

Проблемность первого варианта в том, что ты хардкодишь обращение к document/window

Можешь объяснить, пожалуйста, что означает слеш в твоей цитате?

Означает ли он, что обращение идет к а) «document» ИЛИ б) к «window» ИЛИ в) к ним обоим?

Насчет варианта «в» - вроде, это не так. Потому что:

// Вариант 1
(function() {

  console.log('Сообщение'); // Это сообщение будет выведено в консоль лишь единожды, а не дважды.

}());
Deleted
()
Ответ на: комментарий от no-such-file

Да, но непонятно как это «и/или» работает здесь.

То есть, при каких обстоятельствах, в первом варианте, обращение происходит

  • ... только к window
  • ... только к document
  • ... к ним обоим, то есть и к window и к document
Deleted
()
Ответ на: комментарий от Deleted

То есть, при каких обстоятельствах, в первом варианте, обращение происходит

Без разницы.

У тебя признаки обсессивно-компульсивного расстройства, ты слишком зацикливаешься на несущественных мелочах.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

ОКР это совсем другое. За объяснения спасибо.

Deleted
()

1. код выполниться только тогда, когда до него дойдёт JS интерпретатор.
2. по приведенному коду:
2.1. все переменные (свойства) / функции (методы) не найденные в локальной области видимости, будут искаться в глобальной области видимости.
2.2. в модуль передаётся ссылка на объект document.
2.3. в модуль передаётся ссылка на глобальный объект window.

Да, отличается.

В 3 варианте (window) не будет переключения контекста объектов, т.к. все локальные переменные/функции и переменные/функции объекта window находятся в одном локальном контексте.

В 2 варианте (document), контекст переключиться только в том случае, если интерпретатор не найдёт вызываемую переменную/функцию в локальной области видимости и в объекте document (в локальном контексте).

В 1 варианте (), переключение контекста будет происходить каждый раз, когда не будет найдена вызываемая переменная/функция в локальном контексте.

rEnSbit
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.