⊗jsPmClLEA 261 of 505 menu

Anwendung des lexikalischen Umfelds von Funktionen in JavaScript

Angenommen, wir haben eine Funktion, die als Ergebnis eine andere Funktion zurückgibt:

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

Wenn die übergeordnete Funktion irgendwelche Variablen hat, dann sind diese Variablen im lexikalischen Umfeld der zurückgegebenen Funktion enthalten:

function test() { let num = 1; // Variable der übergeordneten Funktion return function() { // lexikalisches Umfeld = {num: 1} } }

Schreiben wir in den Code unserer zurückgegebenen Funktion console.log, der den Wert der Variable num ausgibt:

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

Lassen Sie uns nun die übergeordnete Funktion test aufrufen und das Ergebnis ihrer Arbeit in die Variable func schreiben:

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

In die Variable func wird die zurückgegebene Funktion geschrieben. Lassen Sie uns unsere Funktion aufrufen - als ihr Ergebnis wird sie den Inhalt der Variable num ausgeben:

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

Wenn man versucht, die Variable num außerhalb der Funktion auszugeben - ist sie nicht verfügbar:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // Variable num hier nicht verfügbar

Wie Sie sehen, hat sich die lokale Variable num an das lexikalische Umfeld unserer Funktion gebunden und jetzt können wir, wenn wir diese Funktion an einer beliebigen Stelle im Code aufrufen, den Wert der Variable num erhalten, auch wenn die Variable an der Aufrufstelle an sich nicht verfügbar ist.

Tatsächlich kann ein ähnliches Ergebnis erzielt werden, indem man die Variable num global macht:

function test() { return function() { console.log(num); } } let num = 1; // globale Variable let func = test(); func(); // gibt 1 aus

Hier gibt es jedoch einen wesentlichen Unterschied: In der neuen Variante kann die Variable num außerhalb der Funktionen geändert werden (da sie global ist), in der alten - nicht.

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen