⊗jsPmClLEA 261 of 505 menu

Utumizi wa Mazingira ya Kileksika ya Kazi katika JavaScript

Acha tuwe na kazi ambayo inarudisha kazi nyingine kama matokeo yake:

function test() { return function() { } }

Ikiwa kazi ya mzazi ina anuwai yoyote, basi anuwai hizo zitakuwamo kwenye mazingira ya kileksika ya kazi inayorudishwa:

function test() { let num = 1; // anuwai ya kazi ya mzazi return function() { // mazingira ya kileksika = {num: 1} } }

Tuandike kwenye msimbo wa kazi yetu inayorudishwa console.log, unaotoa thamani ya anuwai num:

function test() { let num = 1; return function() { console.log(num); } }

Sasa tuite kazi ya mzazi test na tuandike matokeo yake kwenye anuwai func:

function test() { let num = 1; return function() { console.log(num); } } let func = test();

Kazi inayorudishwa itaandikwa kwenye anuwai func. Tuiite kazi yetu - itatoa matokeo ya kuonyesha yaliyomo kwenye anuwai num:

function test() { let num = 1; return function() { console.log(num); } } let func = test(); func(); // itatoa 1

Iwapo tu utajaribu kuonyesha anuwai num nje ya kazi - haitapatikana:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // anuwai num haipatikani hapa

Kama unavyoona, anuwai ya ndani num iliunganishwa na mazingira ya kileksika ya kazi yetu na sasa, ikiitwa mahali popote kwenye msimbo kazi hii, tunaweza kupata thamani ya anuwai num, hata kama mahali pa kiitiko anuwai yenyewe haipatikani.

Kwa kweli matokeo sawa yanaweza kupatikana kwa kufanya anuwai num kuwa ya ulimwengu:

function test() { return function() { console.log(num); } } let num = 1; // anuwai ya ulimwengu let func = test(); func(); // itatoa 1

Hata hivyo, kutakuwa na tofauti kubwa hapa: katika toleo jipya anuwai num inaweza kubadilishwa nje ya kazi (kwa kuwa ni ya ulimwengu), lakini katika toleo la zamani - haifai.

Amua, bila kukimbiza msimbo, nini kitaonyeshwa kwenye konsoli:

function test() { let num1 = 1; let num2 = 2; return function() { return num1 + num2; } } let func = test(); console.log(func());

Amua, bila kukimbiza msimbo, nini kitaonyeshwa kwenye konsoli:

function test() { let num1 = 1; let num2 = 2; return function() { return num1 + num2; } } console.log(test()());

Amua, bila kukimbiza msimbo, nini kitaonyeshwa kwenye konsoli:

function test() { let num1 = 1; return function() { return num1 + num2; } } let num2 = 2; let func = test(); console.log(func());

Amua, bila kukimbiza msimbo, nini kitaonyeshwa kwenye konsoli:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
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