IIFE
An IIFE (Immediately Invoked Function Expression) is an idiom in which a JavaScript function runs as soon as it is defined. It is also known as a self-executing anonymous function. The name IIFE is promoted by Ben Alman in his blog.
// standard IIFE
(function () {
// statements…
})();
// arrow function variant
(() => {
// statements…
})();
// async IIFE
(async () => {
// statements…
})();
It contains two major parts:
- A function expression. This usually needs to be enclosed in parentheses in order to be parsed correctly.
- Immediately calling the function expression. Arguments may be provided, though IIFEs without arguments are more common.
IIFEs are a common pattern used to execute arbitrarily many statements in their own scope (and possibly return a value), in a location that requires a single expression. They are similar to, but much more powerful than, the comma operator, which can only execute multiple expressions and, therefore, does not provide a way to use local variables or control flow statements.
Use cases of IIFEs include:
- Avoiding polluting the global namespace by creating a new scope.
- Creating a new async context to use
await
in a non-async context. - Computing values with complex logic, such as using multiple statements as a single expression.
For code examples, see the function
expression and async function
expression reference pages.
See also
- IIFE (Wikipedia)
- Comma operator
- Related glossary terms: