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:
javascriptlet 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:
javascriptlet result = (function() {
return '!';
})();
console.log(result); // izvadīs '!'
Ļaujiet tagad izsauktās uzreiz funkcijas rezultātam būt anonīmai funkcijai:
javascriptlet func = (function() {
return function() {
console.log('!');
}
})();
func(); // izvadīs '!'
Izveidosim tā, lai atgrieztā funkcija
glabātu aizvēršanā mainīgo num:
javascriptlet 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:
javascriptlet 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
Задание 1
Neieskatoties manā kodā, patstāvīgi realizējiet šādu pašu skaitītāju.
Задание 2
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.