⊗jsPmClLEA 261 of 505 menu

Funksiyaların Leksik Muhiti JavaScript-də Necə Tətbiq Olunur

Tutaq ki, bizim nəticəsi kimi başqa bir funksiya qaytaran funksiyamız var:

function test() { return function() { } }

Əgər ana funksiyanın hər hansı dəyişənləri varsa, bu dəyişənlər qaytarılan funksiyanın leksik mühitində yer alacaq:

function test() { let num = 1; // ana funksiyanın dəyişəni return function() { // leksik mühit = {num: 1} } }

Gəlin qaytarılan funksiyamızın koduna num dəyişəninin qiymətini çıxaran console.log yazaq:

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

Gəlin indi ana test funksiyasını çağıraq və onun işinin nəticəsini func dəyişəninə yazaq:

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

func dəyişəninə qaytarılan funksiya yazılacaq. Gəlin funksiyamızı çağıraq - o, öz nəticəsi kimi num dəyişəninin məzmununu çıxaracaq:

function test() { let num = 1; return function() { console.log(num); } } let func = test(); func(); // 1 çıxaracaq

Əgər sadəcə num dəyişənini funksiyadan kənarda çıxarmağa çalışsaq, o, əlçatan olmayacaq:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // num dəyişəni burada əlçatan deyil

Gördüyünüz kimi, num lokal dəyişəni funksiyamızın leksik mühitinə bağlandı və indi, bu funksiyanı kodun hər hansı yerində çağıranda, num dəyişəninin qiymətini əldə edə bilərik, hətta çağırış yerində bu dəyişən özü əlçatan olmasa belə.

Əslində, oxşar nəticəyə num dəyişənini qlobal etməklə də nail olmaq olar:

function test() { return function() { console.log(num); } } let num = 1; // qlobal dəyişən let func = test(); func(); // 1 çıxaracaq

Lakin burada əhəmiyyətli bir fərq olacaq: yeni variantda num dəyişənini funksiyaların xaricində dəyişmək olar (çünki o, qlobaldır), köhnə variantda isə - olmaz.

Kodu işə salmadan müəyyən edin ki, konsola nə çıxarılacaq:

function test() { let num1 = 1; let num2 = 2; return function() { return num1 + num2; } } let func = test(); console.log(func());

Kodu işə salmadan müəyyən edin ki, konsola nə çıxarılacaq:

function test() { let num1 = 1; let num2 = 2; return function() { return num1 + num2; } } console.log(test()());

Kodu işə salmadan müəyyən edin ki, konsola nə çıxarılacaq:

function test() { let num1 = 1; return function() { return num1 + num2; } } let num2 = 2; let func = test(); console.log(func());

Kodu işə salmadan müəyyən edin ki, konsola nə çıxarılacaq:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et