+function ($) { "use strict"; }(window.jQuery);

В bootstrap и в jquery плагинах встречается запись вида:

+function ($) { "use strict"; 

}(window.jQuery);

Проведём анализ этого выражения

Введение

Самое простое — "use strict"; включение «строгого режима». Подробнее на MDN и LearnJavascript

Способы объявления функций в JS:

  • Function Declaration – обычная функция, объявленная в основном потоке кода.
  • Function Expression – объявление функции в контексте какого-либо выражения, например присваивания.
// Function Declaration
function sum(a, b) {
  return a + b;
}
sum(2,3) // 5

// Function Expression
var sum = function(a, b) {
  return a + b;
}
sum(3,2) // 5

// далее будет использован вызов аналогичный
(sum)(7,9)

Подробнее про сравнение Function Expression и Function Declaration

Создание области видимости

IIFE - Immediately Invoked Function Expression - немедленно выполняемая функция-выражение. (Функция запускается сразу при объявлении). Позволяет избежать конфликта используемых переменных.

Синтаксис следующий:

(function() {
    ... код
})()

Внутри первых круглых скобок ни что иное как Function Expression. Можно передавать параметры:

(function(a,b) {
    ... код
    console.log(b,a); // 9,7
})(7,9)

Объявить IIFE выражение возможно другими способамм, допустим поставив перед функцией какой-либо оператор, например + или !:

+function(a,b) {
  console.log('Вызов с помощью +');
}();

!function(a,b) {
  console.log('Вызов с помощью !');
}();

Подробнее про скобки вокруг функции

Непосредственно разбор выражения

  1. объявляется IIFE (немедленно выполняемая функция-выражение)

    +function () { 
    
    }();
  2. в функцию явно передаётся объект библиотеки jQuery с помощью window.jQuery, которая внутри будет доступна через переменную с именем $.
    +function ($) { 
        // $ - просто имя параметра
    }(window.jQuery);
  3. включается «строгий режим»
    +function ($) { 
        "use strict"; 
        ...
    }(window.jQuery);

Такой приём проектирования называется «Модуль»

При написании кода с использованием библиотеки jQuery используется знак доллара. Чтобы избежать конфликтов с другими библиотеками, которые могут использовать символ доллара, рекомендуется «оборачивать» объект jQuery в IIFE, которое связывает объект jQuery с символом "$», чтобы он не переопределялся другой библиотекой во время выполнения.


Почитать:

Похожие записи

Кратко о внедрение зависимостей и сервис контейнере

Cтатья о том, что такое "Внедрение зависимостей" и "Сервис-контейнер" отталкиваясь от их реализации в PHP фреймворках. Статья написана по мотивам статей Фабьена Потенсье, ведущиго разработчика и идеолога фреймворка Symfony, а также документации фреймворка Laravel.

О слайдах

Youtube видео. Мастер-класс Алексея Каптерева "О слайдах", почему большинство презентаций со слайдами — очень скучные и запутанные, и о том, как превратить ваши слайды из ваших противников в ваших союзников.