IIFE VS анонимное закрытие.
Новобранец Javascript здесь. При чтении шаблонов модулей. Я заметил эту анонимную функцию с круглыми скобками внутри области действия функции. Я не использовал это раньше. Я хотел бы понять это лучше.
// first example
(function(){
//this is IIFE I always use to avoid globle var. I think the simple form of this is F();
})();
// second example
(function () {
//However, what is this concept? what's the formal name of this function?
}());
Каковы основные различия между этими двумя? Как я понимаю второй пример?
1 ответ
Обычно вам не нужны паренги, если вы удалите их, то увидите, что они одинаковые:
function(){}()
function(){}()
Выше, это уже IIFE.
Но если эта функция не используется в качестве выражения, например, в присваивании, тогда JavaScript будет думать, что это объявление функции. Чтобы устранить неоднозначность в коде и вызвать выражение, вы можете делать разные вещи, такие как добавление скобок:
// Same thing
(function(){}())
(function(){})()
Или используя унарный оператор:
!function(){}()
+function(){}()
void function(){}()