Aizvēršanas un funkcijas izsaukšana uzreiz JavaScript
Kā jūs jau zināt, ir iespējams uzreiz izsaukt anonīmu funkciju un piešķirt tās darbības rezultātu kādam mainīgajam:
let result = function() {
return '!';
}();
console.log(result); // izvadīs '!'
Bieži vien funkciju, kas tiek izsaukta uzreiz, šādā gadījumā ieliek apaļās iekavās, lai gan tam nav īstas vajadzības. Tas tiek darīts, lai uzreiz būtu redzams, ka funkcija tiek izsaukta uzreiz:
let result = (function() {
return '!';
})();
console.log(result); // izvadīs '!'
Ļaujiet tagad izsauktās uzreiz funkcijas rezultātam būt anonīmai funkcijai:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // izvadīs '!'
Izveidosim tā, lai atgrieztā funkcija
glabātu aizvēršanā mainīgo num:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Ja pievienosim vēl num++, tad funkcija
func kļūs par gatavu skaitītāju:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); //izvadīs 1
func(); //izvadīs 2
func(); //izvadīs 3
func(); //izvadīs 4
func(); //izvadīs 5
Neieskatoties manā kodā, patstāvīgi realizējiet šādu pašu skaitītāju.
Modificējiet skaitītāja darbību tā, lai
tas skaitītu līdz 5, un pēc tam skaitīšana sāktos
no jauna.