⊗jsPmClCNG 265 of 505 menu

Globale Zählervariable in JavaScript

Wir setzen die Variable num außerhalb der Funktionen, damit sie global wird:

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

In diesem Fall ändern alle zurückgegebenen Funktionen diese globale Variable, und die Zähler werden voneinander abhängig arbeiten:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // erster Zähler func1(); // gibt 1 aus func1(); // gibt 2 aus let func2 = test(); // zweiter Zähler func2(); // gibt 3 aus func2(); // gibt 4 aus

Warum hat unser vorheriger Code unabhängige Zähler erstellt? Ich erinnere an diesen Code:

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

Die Sache ist, dass die Variable num lokal innerhalb der Funktion test ist. Daher erzeugt jeder Aufruf von test seine eigene lokale Variable.

Daher werden die zurückgegebenen Funktionen jede auf ihre eigene lokale Variable der Funktion test verweisen. Genau so wird die Unabhängigkeit der Arbeit erreicht.

Wenn man num jedoch zu einer globalen Variable macht - ist das auch ein Closure. Einfach die lexikalischen Umgebungen der zurückgegebenen Funktionen verweisen auf dieselbe Variable num - alle Änderungen an dieser Variable sind in allen Funktionen sichtbar.

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

let counter = 0; function test() { return function() { console.log(counter); counter++; }; } let func = test; let func1 = func(); let func2 = func(); func1(); func2(); func1(); func2();

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

function test() { let counter = 0; return function() { return function() { console.log(counter); counter++; }; }; } let func = test()(); let func1 = func; let func2 = func; func1(); func2(); func1(); func2();

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

function test() { let counter = 0; return function() { return function() { console.log(counter); counter++; }; }; } let func = test(); let func1 = func(); let func2 = func(); func1(); func2(); func1(); func2();
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