⊗jsPmClLEA 261 of 505 menu

A függvények lexikális környezetének alkalmazása JavaScriptben

Tegyük fel, hogy van egy függvényünk, amely egy másik függvényt ad vissza eredményül:

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

Ha a szülőfüggvénynek vannak változói, akkor ezek a változók a visszaadott függvény lexikális környezetében fognak szerepelni:

function test() { let num = 1; // a szülőfüggvény változója return function() { // lexikális környezet = {num: 1} } }

Írjunk a visszaadott függvény kódjába egy console.log-ot, amely kiírja a num változó értékét:

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

Most hívjuk meg a test szülőfüggvényt, és mentsük az eredményét a func változóba:

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

A func változóba a visszaadott függvény kerül. Hívjuk meg a függvényünket - az eredménye a num változó tartalmát fogja kiírni:

function test() { let num = 1; return function() { console.log(num); } } let func = test(); func(); // kiírja az 1-et

Ha viszont a függvényen kívül próbáljuk meg kiírni a num változót - az nem lesz elérhető:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // a num változó itt nem elérhető

Amint látod, a num lokális változó hozzákapcsolódott a függvényünk lexikális környezetéhez, és most, bárhol meg tudjuk hívni ezt a függvényt, megkaphatjuk a num változó értékét, még akkor is, ha a hívás helyén ez a változó önmagában nem elérhető.

Valójában hasonló eredményt érhetünk el, ha a num változót globálissá tesszük:

function test() { return function() { console.log(num); } } let num = 1; // globális változó let func = test(); func(); // kiírja az 1-et

Itt azonban jelentős különbség lesz: az új változatban a num változót a függvényeken kívül is meg lehet változtatni (mivel globális), a régiben viszont nem.

Határozd meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

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

Határozd meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

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

Határozd meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

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

Határozd meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás