⊗jsPmClCNG 265 of 505 menu

Variable globale de compteur en JavaScript

Déplaçons la variable num en dehors des fonctions, la rendant ainsi globale :

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

Dans ce cas, toutes les fonctions renvoyées modifieront cette variable globale et les compteurs fonctionneront de manière dépendante les uns des autres :

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // premier compteur func1(); // affichera 1 func1(); // affichera 2 let func2 = test(); // deuxième compteur func2(); // affichera 3 func2(); // affichera 4

Pourquoi notre code précédent créait-il des compteurs indépendants ? Je rappelle ce code :

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

Le fait est que la variable num est locale à l'intérieur de la fonction test. Par conséquent, chaque appel de test génère sa propre variable locale.

C'est pourquoi les fonctions renvoyées feront référence chacune à sa propre variable locale de la fonction test. C'est précisément ainsi que l'indépendance du fonctionnement est atteinte.

Si l'on rend num variable globale, cela constituera aussi une fermeture. Simplement, les environnements lexicaux des fonctions renvoyées se réfèrent à la même variable num - tout changement apporté à cette variable sera visible dans toutes les fonctions.

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

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

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

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();

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

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();
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser