⊗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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау