⊗jsPmFTFENIn 233 of 505 menu

Ujanja wa Misemo ya Kifunction katika JavaScript

Jina Function Expression halikopewa bure. Kwa kweli linamaanisha hilo - kwamba kazi kama hizi ni sehemu ya usemi fulani.

Kwa mfano, tunaweza kuongeza mfumo wa mistari fulani na kazi isiyo na jina:

let str = 'str' + function() {return 3;}; console.log(str); // itatoa 'strfunction() {return 3;}'

Kwa nini tunaona matokeo hayo ya kushangaza, na si nambari 3? Kwa sababu neno la pili - hii si matokeo ya kazi, lakini yake ya awali kanuni (tunafanya kazi hii haikutajwa, tu iliandikwa).

Yaani jina kielelezo cha kazi inamaanisha kwamba kazi kama hiyo inachukua ushiriki katika usemi fulani.

Kugawia kwa kutofautisha pia ni usemi:

let func = function() { console.log('!'); };

Pia inawezekana, kwa mfano, kupitisha kazi kama kigezo katika console.log na itatoa kanuni zake za asili kwenye konsoli - hii pia itakuwa inachukuliwa kuwa usemi:

console.log(function() {return 3;});

Kwa nini hii ni muhimu: kwa sababu tofauti ya Function Declaration na Function Expression kabisa si kwamba kazi ya kwanza imeundwa na jina, na ya pili hapo mwanzo hana jina. Hii si kweli.

Mfano. Hapa kazi yetu haina jina, lakini wakati huo huo hushiriki katika usemi wowote (yaani hakuna vitendo vyake vyovyote, kusema kwa urahisi):

/* Kazi hii itakuwa Function Declaration, lakini na makosa ya ki-sintaksia: */ function() { console.log('!'); }

Nambari kama hiyo itatoa hitilafu kabisa! Kwa nini: hivyo kama kazi haishiriki katika usemi wowote, basi kivinjari kinaihesabu kama Function Declaration, lakini haipati jina lake na inatoa hitilafu.

Ili hitilafu iondoke, unahitaji kulazimisha kazi kuwa sehemu ya usemi fulani. Kwa mfano, tuandike operesheni mbele yake +:

+function() { // msimbo kama huu ni sahihi console.log('!'); };

Hii inafanyaje kazi: operesheni yenyewe + haitendi chochote, hii ni sawa na kuandika badala ya nambari 3 nambari +3 - inakubalika, lakini hakuna kinachobadilika.

Lakini kwa upande wa kazi - inabadilika. Sasa yetu kazi tayari sio tu imeandikwa, bali inashiriki katika usemi. Kwa hivyo hitilafu haitakuwa tena. Matokeo ya utekelezaji wa kazi pia hayatakuwa, maana tumeiandika tu, lakini hatukuita.

Badala ya + inaweza kuandikwa chochote. Kwa mfano:

-function() { // msimbo kama huu ni sahihi console.log('!'); }; !function() { // msimbo kama huu ni sahihi console.log('!'); };

Pia inawezekana kuchukua kazi yetu kwenye mabano ya mviringo, katika kesi hii pia itakuwa kielelezo cha kazi:

(function() { // msimbo kama huu ni sahihi console.log('!'); });

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

function func() { console.log('!'); }

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

let func = function() { console.log('!'); }

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

+function() { console.log('!'); }

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

!function func() { console.log('!'); }

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

-function func() { console.log('!'); }

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

1 + function func() { console.log('!'); }

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

(function func() { console.log('!'); })

Amua ikiwa kazi iliyowakilishwa ni Function Declaration au Function Expression:

console.log( function() { console.log('!'); } );
Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa