⊗jsPmClLEA 261 of 505 menu

Zbatimi i Mjedisit Leksikor të Funksioneve në JavaScript

Le të themi se kemi një funksion që kthen në rezultat një funksion tjetër:

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

Nëse funksioni prind ka ndonjë variabël, ato variabla do të përmbahen në mjedisin leksikor të funksionit të kthyer:

function test() { let num = 1; // variabla e funksionit prind return function() { // mjedisi leksikor = {num: 1} } }

Le të shkruajmë në kodin e funksionit tonë të kthyer console.log, i cili shfaq vlerën e variablës num:

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

Tani le ta thërrasim funksionin prind test dhe rezultatin e tij ta regjistrojmë në variablin func:

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

Në variablin func do të regjistrohet funksioni i kthyer. Le ta thërrasim funksionin tonë - si rezultat do të shfaqë përmbajtjen e variablës num:

function test() { let num = 1; return function() { console.log(num); } } let func = test(); func(); // do të shfaqë 1

Nëse përpiqemi thjesht të shfaqim variablin num jashtë funksionit - ajo nuk do të jetë e disponueshme:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // variabla num nuk është e disponueshme këtu

Siç e shihni, variabla lokale num u lidh me mjedisin leksikor të funksionit tonë dhe tani, duke e thirrur këtë funksion kudo në kod, ne mund të marrim vlerën e variablës num, edhe nëse në vendin e thirrjes vetë kjo variabël nuk është e disponueshme.

Në fakt, një rezultat i ngjashëm mund të arrihet duke e bërë variablin num globale:

function test() { return function() { console.log(num); } } let num = 1; // variabël globale let func = test(); func(); // do të shfaqë 1

Megjithatë, këtu do të ketë një ndryshim të rëndësishëm: në variantin e ri variabla num mund të ndryshohet jashtë funksioneve (pasi është globale), ndërsa në atë të vjetër - jo.

Përcaktoni, pa e ekzekutuar kodin, çfarë do të shfaqet në konsol:

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

Përcaktoni, pa e ekzekutuar kodin, çfarë do të shfaqet në konsol:

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

Përcaktoni, pa e ekzekutuar kodin, çfarë do të shfaqet në konsol:

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

Përcaktoni, pa e ekzekutuar kodin, çfarë do të shfaqet në konsol:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo