Сведения о вопросе

Fedya

20:33, 27th August, 2020

Теги

JavaScript    

Что означает контрукция типа “(function(d){ ... })(document)”

Просмотров: 265   Ответов: 3

Неоднократно встречал подобную контструкцию:

(function (d) {

    // Какой-то код

})(document);


Мне понятно, что данном коде используется замыкание, но не понятно зачем в качестве аргумента замкнутой функции передаёться объект Document.

Вот конкретный пример — маленькая Javascript утилита, которая далает так, чтобы в IE можно было задавать стили HTML5 элементам (таким как section, header, article и прочие; по умолчанию стили для этих элементов в IE будут игнорироваться). В этом скрипте используется следующая конструкция:

(function (p, e) {
    // Какой-то код
})(this, document);


В этом примере помимо аргумента document ещё в добавок передаётся аргумент this, в котором, как я понимаю, хранится объект Window. Кто может мне подсказать зачем замкнутым функциям передавать в качастве аргуметов Document и Window?



  Сведения об ответе

lesha

13:54, 18th August, 2020

1. Чтобы ограничить область видимости, т.е. избежать глобальных переменных.
2. Чтобы сократить запись обращения к объекту.
3. Как частный случай 1го и 2го, чтоб не допустить конфликта имен. Например, при использовании jQuery часто пишут
    (function($) {
        ...
    })(jQuery);

Благодаря этому в скрипте можно использовать сокращенную запись типа $(xxx), даже если идентификатор $ определен где-то еще, например, в MooTools.

P.S. И это, кстати, не замыкание.


  Сведения об ответе

fo_I_K

03:24, 5th August, 2020

Ну можно сэкономить пару байт.


  Сведения об ответе

FAriza

22:21, 3rd August, 2020

По мне так это обычное капсулирование функционала.
А на вход вы можете подать любую переменную, например документ ифрейма а не свой — функции будет как-то фиолетово


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться