@a_pussycan
Начинающий веб-программист

Что значит данная конструкция (function () {})()?

Сейчас при чтении книги Ильи Кантора наткнулся на такую конструкцию
(function () {
Какой то код
})()
Я понимаю, зачем нужны скобки вокруг функции, но не объясняется зачем нужны скобки после (рядом) функции "()"
  • Вопрос задан
  • 389 просмотров
Решения вопроса 1
@dsmaslov
Создаётся анонимная функция, после её объявления она вызывается.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
Объявили мы функцию:var f = function(){};

А теперь почувствуйте разницу:
// Без скобок:
f; // просто в воздух заявили, что есть у нас такая функция

// и со скобками:
f(); // тут уже результат выполнения этой функции, т.е. заставили её сработать.


Чуть подробнее
var f = function(){ return 'OK'; };

typeof f; //  function
typeof f(); // string

Во вторых скобках можно передать в объявленную функцию какие-нибудь аргументы:
var f = function(a, b) { return a + b; };
typeof f; // function
typeof f(1,2); // number

typeof (function(a,b){return a+b;}); // function
typeof (function(a,b){return a+b;})(1, 2); // number


В оригинальном коде точно та же история, только функция объявляется на ходу.
Ответ написан
Комментировать
@Pantene742
Стоит отметить что в ней this глобальный тоесть window. Если хотите в ней иметь локальную область видимости то передавайте в нее параметр this/ кажись так ... function(this){}(this) обявляем принимаемый и дальше передаем то который в нашей области видимости.

Данная функция помагает изолировать код в своей области видимости.
1. она сама срабатывает(все что в ней как код словно в js файле не в функции)
2. В ней глобальная область видимости.

Сначала мы подключаем библиотеку и заносим ее в переменную
Эту переменную называем уникально а в обьявлении функции пишем $, так как нашим jQuery плагинам надо именно такое название переменной. Теперь У нас в каждой такой функции погут использоваться различные версии jQuery и каждый код (ваш код или плагин) в это функции использует обычное название переменной - '$' в которой jQuery.

var jq14 = jQuery.noConflict(true);   // заносим подключенную либу в переменную

(function ($) {   // функция принимает $ для корректной работы jQuery плагинов или вашего кода
    $(document).ready(function () {
        // your logic
    });
}(jq14));  // передаем уникальное название из внейшней среды
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы