Выражение немедленно вызываемой функции (IIFE) в JavaScript-передача jQuery


У меня есть следующий код, который, как я знаю, является IIFE. Однако я никогда не мог понять, что такое (jQuery) и ( $ ). Я знаю, что это как-то связано с передачей ссылки jQuery в IIFE, но не мог бы кто-нибудь объяснить мне ясно цель их? Спасибо за помощь и время : -)

(function ($) {
//code
})(jQuery);
1 6

1 ответ:

$ является аргументом функции. jQuery - это то, что передается в качестве этого аргумента при вызове функции.

Подумайте об этом так:

function init($) {
   // code can use $ here as a shortcut for jQuery
   // even if $ has a different definition globally or isn't defined globally
}

init(jQuery);
За исключением того, что этот пример создает глобальный символ init, выполнение этого и вашего IIFE идентичны. Оба определяют функцию и немедленно вызывают ее.

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

Преимущество IIFE заключается в том, что новые глобальные символы не определяются. Кроме того, он идентичен по исполнению этому коду.