⊗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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу