+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('Вызов с помощью !');
}();
Подробнее про скобки вокруг функции
Непосредственно разбор выражения
объявляется IIFE (немедленно выполняемая функция-выражение)
+function () { }();
- в функцию явно передаётся объект библиотеки jQuery с помощью
window.jQuery
, которая внутри будет доступна через переменную с именем$
.+function ($) { // $ - просто имя параметра }(window.jQuery);
- включается «строгий режим»
+function ($) { "use strict"; ... }(window.jQuery);
Такой приём проектирования называется «Модуль»
При написании кода с использованием библиотеки jQuery используется знак доллара. Чтобы избежать конфликтов с другими библиотеками, которые могут использовать символ доллара, рекомендуется «оборачивать» объект jQuery в IIFE, которое связывает объект jQuery с символом "$», чтобы он не переопределялся другой библиотекой во время выполнения.
Почитать: