Closure och omedelbar funktionsanvändning i JavaScript
Som du redan vet är det möjligt att anropa en anonym funktion omedelbart och tilldela resultatet av operationen till någon variabel:
let result = function() {
return '!';
}();
console.log(result); // skriver ut '!'
Ofta sätts funktionen som anropas omedelbart i sådana fall inom parenteser, även om det inte är nödvändigt. Detta görs för att det genast ska vara synligt att funktionen anropas omedelbart:
let result = (function() {
return '!';
})();
console.log(result); // skriver ut '!'
Låt nu resultatet av den omedelbart anropade funktionen vara en anonym funktion:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // skriver ut '!'
Låt oss göra så att den returnerade funktionen
lagrar variabeln num i ett closure:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Om man lägger till num++, så blir funktionen
func en färdig räknare:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); //skriver ut 1
func(); //skriver ut 2
func(); //skriver ut 3
func(); //skriver ut 4
func(); //skriver ut 5
Utan att kolla på min kod, implementera en sådan räknare på egen hand.
Modifiera räknarens funktion så att
den räknar till 5, och sedan börjar omräkningen
om från början.