Back to Freecodecamp

Understand the Immediately Invoked Function Expression (IIFE)

curriculum/challenges/english/blocks/object-oriented-programming/587d7db2367417b2b2512b8b.md

latest1.4 KB
Original Source

--description--

A common pattern in JavaScript is to execute a function as soon as it is declared:

js
(function () {
  console.log("Chirp, chirp!");
})();

This is an anonymous function expression that executes right away, and outputs Chirp, chirp! immediately.

Note that the function has no name and is not stored in a variable. The two parentheses () at the end of the function expression cause it to be immediately executed or invoked. This pattern is known as an <dfn>immediately invoked function expression</dfn> or <dfn>IIFE</dfn>.

--instructions--

Rewrite the function makeNest and remove its call so instead it's an anonymous immediately invoked function expression (IIFE).

--hints--

The function should be anonymous.

js
assert(/\((function|\(\))(=>|\(\)){?/.test(__helpers.removeJSComments(code).replace(/\s/g, '')));

Your function should have parentheses at the end of the expression to call it immediately.

js
assert(/\(.*(\)\(|\}\(\))\)/.test(__helpers.removeJSComments(code).replace(/[\s;]/g, '')));

--seed--

--seed-contents--

js
function makeNest() {
  console.log("A cozy nest is ready");
}

makeNest();

--solutions--

js
(function () {
  console.log("A cozy nest is ready");
})();

js
(function () {
  console.log("A cozy nest is ready");
}());

js
(() => {
  console.log("A cozy nest is ready");
})();

js
(() =>
  console.log("A cozy nest is ready")
)();