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(){}()
Другие вопросы по тегам