Kupeana Kazi kama Vigezo katika JavaScript

Kazi, kama nambari, masharti na safu, zinaweza kupitishwa kama vigezo kwa kazi nyingine.

Tuchunguze kwa undani zaidi kwa kutumia mfano wa vitendo. Tuchukulie tuna kazi test inayokubali vigezo viwili:

javascripttest(kipimo1, kipimo2);

Wacha tupe kwenye kipimo cha kwanza cha kazi test kazi isiyo na jina, inayorudisha 1, na kwenye kipimo cha pili - kazi isiyo na jina inayorudisha 2:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

Msimbo ulio hapo juu, bado haufanyi kazi, kwa kuwa hatujaanzisha kazi yenyewe. Hebu tuunde:

javascriptfunction test(func1, func2) {
  
}

Wakati wa kufafanua kazi tuliweka vigezo viwili - func1 na func2. Vigezo hivi havijui chochote kuhusu kile kitakachopitiwa ndani yao. Tunaweza, kwa mfano, kupitisha nambari:

javascripttest(1, 2); // tunaita kazi

function test(func1, func2) {
  console.log(func1); // itaonyesha 1
  console.log(func2); // itaonyesha 2
}

Au tunaweza kupitisha kazi:

javascripttest(
  function() {return 1;}, // kipimo cha kwanza
  function() {return 2;}  // kipimo cha pili
);

function test(func1, func2) {
  console.log(func1); // itaonyesha 'function() {return 1;}'
  console.log(func2); // itaonyesha 'function() {return 2;}'
}

Kama unavyoona, sasa kwenye konsole inaonyesha msimbo wa asili wa kazi. Hebu tufanye ili ionyeshe matokeo yao. Ili kufanya hivyo andika mabano ya mviringo kwenye kazi:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() ); // itaonyesha 1
  console.log( func2() ); // itaonyesha 2
}

Wacha tuonyeshe kwenye konsole jumla ya matokeo ya kazi ya kwanza na ya pili:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() + func2() ); // itaonyesha 3
}
Задание 1

Fanya kazi test, kwa vigezo inayokubali 3 kazi. Pitisha ndani yake kipimo cha kwanza kazi, inayorudisha 1, cha pili - kazi inayorudisha 2, cha tatu - kazi inayorudisha 3. Onyesha kwenye konsole jumla ya matokeo ya kazi.