Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

Обертка для бибилиотек (function(){})()

#javascript


Часто видел когда код JavaScript оборачивается в такую конструкцию:
(function(){
// ... код ...
})();

Для чего это нужно?
Пример одной из таких библиотек можно посмотреть здесь.    


Ответы

Ответ 1



Это называется "замыкание" и используется для создания собственных пространств имен. Подробнее можно почитать на javascript Гарден. Зачастую это свойство применяют для пробега по массиву: var a = document.getElementsByTagName('a'); for(var i = 0; i < a.length; ++i){ a[i].onclick = function(){alert(i);return false;} } В этом случае каждая ссылка будет выдавать окошко с количеством ссылок (i = a.length). var a = document.getElementsByTagName('a'); for(var i = 0; i < a.length; ++i){ (function(n){a[i].onclick = function(){alert(n);return false;}})(i); } А в этом случае создается замыкание, и значение n не берется извне. То есть, ссылки будут выдавать при клике свой порядковый номер.

Ответ 2



Вызывает функцию сразу после объявления. т.н. "немедленный вызов объявленной функции", если взять кальку с английского. Эквивалентно: function abc(){ //something; } abc(); ну, а нужно чтобы можно было этим куском пользоваться независимо, в т.ч. управление областью видимости, чтобы при вставке в чужой код как можно меньше всего пострадало.

Комментариев нет:

Отправить комментарий