--- id: 587d7db2367417b2b2512b8b title: Understand the Immediately Invoked Function Expression (IIFE) challengeType: 1 --- ## Description <section id='description'> A common pattern in JavaScript is to execute a function as soon as it is declared: <blockquote>(function () {<br> console.log("Chirp, chirp!");<br>})(); // this is an anonymous function expression that executes right away<br>// Outputs "Chirp, chirp!" immediately</blockquote> 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 <code>immediately invoked function expression</code> or <code>IIFE</code>. </section> ## Instructions <section id='instructions'> Rewrite the function <code>makeNest</code> and remove its call so instead it's an anonymous <code>immediately invoked function expression</code> (<code>IIFE</code>). </section> ## Tests <section id='tests'> ```yml tests: - text: The function should be anonymous. testString: assert(/\(\s*?function\s*?\(\s*?\)\s*?{/.test(code), 'The function should be anonymous.'); - text: Your function should have parentheses at the end of the expression to call it immediately. testString: assert(/}\s*?\)\s*?\(\s*?\)/.test(code), 'Your function should have parentheses at the end of the expression to call it immediately.'); ``` </section> ## Challenge Seed <section id='challengeSeed'> <div id='js-seed'> ```js function makeNest() { console.log("A cozy nest is ready"); } makeNest(); ``` </div> </section> ## Solution <section id='solution'> ```js (function () { console.log("A cozy nest is ready"); })(); ``` </section>