Vielezi vya Kazi Vilivyopewa Majina kwa JavaScript
Tuchukulie tuna kielezi cha kazi kama hiki:
let test = function() {
console.log('!');
};
test(); // itatoa '!'
Wacha tupe jina func kwa kazi yetu:
let test = function func() {
console.log('!');
};
test();
Kama unavyojua tayari, hawezi kurejelea kazi kwa jina hili:
let test = function func() {
console.log('!');
};
test(); // itatoa '!'
func(); // itatoa hitilafu
Kwa nini basi kuipa jina kazi, ikiwa haitapatikana? Jambo ni kwamba jina hili halitakuwa linapatikana nje ya kazi, lakini linapatikana ndani ya kazi hiyo.
Wacha tuhakikishe:
let test = function func() {
console.log(func); // kazi itatoa msimbo wake asili
};
test(); // tunaita kazi
Wacha tuiite kazi yetu ndani ya yenyewe:
let test = function func() {
console.log('!'); // tunatoa '!'
func(); // tunajiita wenyewe
};
test();
Ukizindua msimbo huu, matokeo yatasomwa kwenye koni idisi isiyo na kikomo ya matokeo kwenye koni.
Kweli, kazi yetu inaweza kuitwa ndani ya yenyewe
sio tu kama func, lakini pia kama test:
let test = function func() {
console.log('!');
test(); // tunajiita wenyewe
};
test();
Kuna tofauti gani? Tofauti ni kwamba jina
test ni tu kutofautisha. Katika mchakato
wa kazi ya script kazi yetu inaweza kuandikwa
kwa kutofautiana kwingine au kupitishwa kama parameta
- katika kesi hii uhusiano kati ya kutofautisha test
na kazi unaweza kupotea.
Jina func limefungwa imara kwa kazi
mahususi ili kuweza kurejelea kazi yetu ndani ya yenyewe.
Vielezi vya Kazi kama hivyo vilivyo na jina la kazi vinaitwa vielezi vya kazi vilivyopewa majina.