Что такое IIFE в JavaScript?
Узнайте, что такое выражение немедленно вызываемой функции, за пять минут или меньше!
Услышав термин "Выражение немедленно вызванной функции" (также известный как IIFE) и внезапно почувствовав себя мусором из-за непонимания, также совершенно нормально, потому что языки программирования часто переполнены элитарными терминами, чтобы вещи казались более сложными, чем они есть на самом деле.
Также совершенно нормально не знать, в чем разница между использованием этой функции вместо традиционной. Давайте попробуем развенчать все это так, чтобы чувство неуверенности в использовании IIFE ушло в прошлое!
Предупреждение о плохой шутке: «сомнительно» - прилагательное, которое означает «полон неопределенности; сомнительно ».
Проще говоря, выражение немедленно вызываемой функции - хороший способ защитить область действия вашей функции и переменных в ней. Термин «область действия» также может быть немного более привлекательным, чем должен быть - в основном это просто означает, откуда к нему можно получить доступ.
Вы часто (но не всегда) увидите IIFE, используемые в фреймворках / библиотеках, таких как jQuery. Они часто оборачивают весь код своей инфраструктуры / библиотеки внутри IIFE, чтобы защитить область действия его переменных, а также убедиться, что все выполняется без каких-либо действий со стороны пользователя.
В любом случае, давайте посмотрим на быстрый пример функции и почему может быть полезно превратить ее в IIFE:
// Normal function function addTogether() { var x = 20; var y = 20; var answer = x + y; console.log(answer); } addTogether();
Итак, у нас есть функция, которая просто складывает значения var x и var y. Затем мы вызываем функцию вскоре после этого. С этого момента мы можем вызывать функцию addTogether сколько угодно раз.
Но, возможно, это нежелательно, и мы просто хотим вызвать функцию, чтобы получить результат, но это все - мы никогда не захотим использовать ее снова и не хотим, чтобы наша программа когда-либо могла случайно получить доступ Это.
Теперь первое, что следует здесь упомянуть, это то, что в приведенном выше примере наши переменные безопасны - безопасны, поскольку они неизменяемы (это просто причудливый технический термин, означающий, что они не могут быть изменены в будущее).
Так что это здорово, к нашим переменным нельзя получить доступ, но как сделать так, чтобы к нашей функции тоже нельзя было получить доступ?
Вот тут-то и пригодятся IIFE.
Итак, первое, что мы делаем, это заключаем в скобки всю нашу функцию addTogether, например:
(function addTogether() { var x = 20; var y = 20; var answer = x + y; console.log(answer); });
Фактически это первая часть создания так называемого функционального выражения. На данный момент это не совсем типичное функциональное выражение, поскольку функциональные выражения обычно являются анонимными. То, что у нас есть, называется выражением именованной функции. Как вы думаете, сколько раз мы можем повторить выражение функции в течение минуты? Выражение функции, выражение функции, выражение функции.
Выражение функции!
В любом случае, поскольку мы создаем одно из тех функций-выражений, которые я только что сказал примерно десять раз, нам больше не нужно давать функции имя, потому что план таков, что как только мы создадим IIFE , мы не собираемся снова вызывать функцию. Так что давайте избавимся от имени:
(function() { var x = 20; var y = 20; var answer = x + y; console.log(answer); });
Ладно, мы почти у цели.
Наконец, нам нужен способ вызова этой функции, но как это сделать сейчас, учитывая, что у нас нет имени, на которое можно было бы ссылаться? Ну, мы просто добавляем пару скобок в конце функции (но непосредственно перед точкой с запятой), например:
(function() { var x = 20; var y = 20; var answer = x + y; console.log(answer); })();
И вот он, ваш собственный IIFE!
Так что теперь больше не нужно сомневаться в использовании IIFE.
Если вы хотите узнать больше о IIFE, на веб-сайте MDN есть красивый глоссарий о них (имейте в виду, что они используют много технических терминов).
Если вы нашли это полезным, не забудьте оставить несколько аплодисментов. И следуйте за нами, будьте как дома, поднимите ноги!
TL;DR
Выражение немедленно вызываемой функции - хороший способ защитить область действия вашей функции и переменных в ней.
Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на наш канал YouTube!
Больше контента на plainenglish.io