IIFE
An IIFE (Immediately Invoked Function Expression) is a JavaScript function that runs as soon as it is defined.
- Avoid polluting the global namespace
- Execute an async function
- The module pattern
- IIFE use block scope, not function scope
Classic interview question
for (var i = 1; i < 5; i++) {
setTimeout(function () {
console.log(i);
}, 1000);
}
// 5 5 5 5 5
==>
for (var i = 1; i < 5; i++) {
(function (i) {
setTimeout(function () {
console.log(i);
}, i * 1000);
})(i);
}
// use let is better option