Operesheni rest katika JavaScript
Somo hili tutaanzia na maelezo fulani.
Masomo yote yaliyopita ya sehemu hii mimi
sikuwa nimewaambieni ukweli wote kuhusu operesheni ...
Kweli ni kwamba operesheni hii kulingana na mahali palipo kwenye msimbo inaweza kuitwa ama operesheni spread, ama operesheni rest.
Kama tayari unavyojua, wakati operesheni spread
ipo mbele ya safu (array) au mkondo (string), inaigawanya
kuwa maadili ya mtu mmoja mmoja. Operesheni rest,
ingawa ina sintaksia sawa kama ...,
ni ya kutumika kwa jingine.
Sasa tutachambua, ni kwa nini. Wacha tuwe na kitendo (function) kinachokubana vigezo viwili:
function func(a, b) {
console.log(a);
console.log(b);
}
Unapaswa kujua tayari, kwamba ikiwa utapeana vigezo vya ziada kwenye kitendo, haitasababisha hitilafu:
func(1, 2, 3, 4, 5);
Operesheni rest inaruhusu kupata
vigezo vyote vya ziada kwa umbo la safu (array). Kwa hili
kwenye kitendo huongezwa kigezo kingine (lazima
kiwe cha mwisho), mbele ambayo huandikwa 3 nukta:
function func(a, b, ...rest) {
}
Nukta hizi tatu ndizo operesheni rest, na jina
la kutofautisha linaweza kuwa na jina lolote, lakini
kwa kawaida pia hupewa jina rest.
Wacha tuite kitendo chetu kwa kiwango
cha ziada cha vigezo na tuone, nini huingia
kwenye vigezo a na b, na nini -
kwenye mabaki rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // itaonyesha 1
console.log(b); // itaonyesha 2
console.log(rest); // itaonyesha [3, 4, 5]
}
Ikiwa hakuna vigezo vya ziada, basi kwenye kutofautisha
rest kitaandikwa safu tupu:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // itaonyesha 1
console.log(b); // itaonyesha 2
console.log(rest); // itaonyesha []
}
Kwenye kitendo kwa ujumla kunaweza kutokuwapo na vigezo,
lakini wakati huo huo unaweza kuongeza rest.
Kwa hali hii kitendo kinaweza kuitwa
kwa kiwango chochote cha vigezo na yote
yataingia kwenye safu rest:
function func(...rest) {
console.log(rest);
}