Қафолатҳо ва фарохондани функсияи ҳоли дар JavaScript
Чунон ки шумо аллакай медонед, шумо метавонед функсияи номаълумро ҳолӣ фарохонед ва натиҷаи корро ба баъзе тағирёбандаҳо таъин кунед:
let result = function() {
return '!';
}();
console.log(result); // '!'-ро хориҷ мекунад
Аксар вақт функсияеро, ки ҳолӣ фарохонида мешавад, дар ин ҳолат дар қавсҳои давра мегиранд, гарчад дар ин ҳоҷат нест. Ин барои он анҷом дода мешавад, то дар ҳол дида шавад, ки функсия ҳолӣ фарохонида мешавад:
let result = (function() {
return '!';
})();
console.log(result); // '!'-ро хориҷ мекунад
Бигзор акнун натиҷаи функсияе, ки ҳолӣ фарохонида шудааст, функсияи номаълум бошад:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // '!'-ро хориҷ мекунад
Биёед ба тавре созем, ки функсияи баргардонидашуда
дар қафолат тағирёбандаи num-ро нигоҳ дорад:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Агар шумо num++-ро илова кунед, он гоҳ функсияи
func ба як ҳисобкунаки тайёр табдил меёбад:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // 1-ро хориҷ мекунад
func(); // 2-ро хориҷ мекунад
func(); // 3-ро хориҷ мекунад
func(); // 4-ро хориҷ мекунад
func(); // 5-ро хориҷ мекунад
Бе назар кардан ба коди ман, худатон чунин ҳисобкунакро амалӣ кунед.
Кори ҳисобкунакро тавре тағир диҳед, ки
он то 5 ҳисоб кунад, ва сипас ҳисоб аз
аввал оғоз шавад.