⊗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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა