⊗jsPmClCNG 265 of 505 menu

Глабальная зменная лічыльніка ў JavaScript

Вынясем зменную num за функцыі, тым самым зрабіўшы яе глабальнай:

let num = 1; // глабальная зменная function test() { return function() { console.log(num); num++; }; }

У гэтым выпадку ўсе якія вяртаюцца функцыі будуць змяняць гэтую глабальную зменную і лічыльнікі будуць працаваць ужо залежна адзін ад аднаго:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // першы лічыльнік func1(); // вывядзе 1 func1(); // вывядзе 2 let func2 = test(); // другі лічыльнік func2(); // вывядзе 3 func2(); // вывядзе 4

Чаму ж наш папярэдні код рабіў незалежныя лічыльнікі? Нагадаю гэты код:

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

Справа ў тым, што зменная num - лакальная ўнутры функцыі test. Таму кожны выклік test нараджае сваю лакальную зменную.

Таму якія вяртаюцца функцыі будуць спасылацца кожная на сваю лакальную зменную функцыі test. Менавіта так і дасягаецца незалежнасць працы.

Калі ж зрабіць num глабальнай зменнай - гэта таксама будзе замыканнем. Проста лексічныя асяроддзі якія вяртаюцца функцый спасылаюцца на адну і тую ж зменную num - любыя змены з гэтай зменнай будуць бачныя ва ўсіх функцыях.

Вызначыце, не запускаючы код, што вывядзецца ў кансоль:

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

Вызначыце, не запускаючы код, што вывядзецца ў кансоль:

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

Вызначыте, не запускаючы код, што вывядзецца ў кансоль:

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();
Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικά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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць