⊗jsPmClLEA 261 of 505 menu

JavaScript-de funksiýalaryň leksik ýagdaýynyň ulanylyşy

Biziň netijesi hökmünde başga bir funksiýa yzyna gaýtaryan funksiýamyz bar diýeliň:

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

Eger ata-enanyň funksiýasy hasaýatly üýtgeýän böleklerine eýe bolsa, onda bu üýtgeýänler yza gaýtarylýan funksiýanyň leksik ýagdaýynda bar boljak:

function test() { let num = 1; // ata-enanyň funksiýasynyň üýtgeýjisi return function() { // leksik ýagdaý = {num: 1} } }

Geliň, yza gaýtarylýan funksiýamyzyň kodyna num üýtgeýjisiniň bahasyny görkezýän console.log ýazaýalyň:

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

Indi geliň, ata-enanyň test funksiýasyny çagyrýaly we onuň işiniň netijesini func üýtgeýjisinde ýazaýalyň:

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

func üýtgeýjisine yza gaýtarylýan funksiýa ýazylyşdyr. Geliň, funksiýamyzy çagyrýaly – ol öz netijesi hökmünde num üýtgeýjisiniň mazmunyny görkezer:

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

Eger-de ýönekeý ýagdaýda num üýtgeýjisini funksiýanyň daşynda görkezmäge synanşsaňyz, ol elýeterli bolmaz:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // num üýtgeýjisi bu ýerde elýeterli däl

Görşüňiz ýaly, ýerli num üýtgeýjisi biziň funksiýamyzyň leksik ýagdaýyna birikdirildi we indi, bu funksiýany kodunyň isli ýerinde çagyrýanyňyzda, biz num üýtgeýjisiniň bahasyny alyp bileris, eger-de çagyrylan ýerde bu üýtgeýji özüňe elýeterli bolmasa hem.

Aslynda, şuňa meňzeş netijä num üýtgeýjisini global ýasamak bilen hem ýetip bolýar:

function test() { return function() { console.log(num); } } let num = 1; // global üýtgeýji let func = test(); func(); // 1 görkezer

Emma bu ýerde esasy tapawut bolar: täze wariantda num üýtgeýjisini funksiýalaryň daşynda üýtgedip bolýar (sebäbi ol global), köne wariantda bolsa ýok.

Kody işletmezden öň, konsolda näme görkeziljekdigini kesgitläň:

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

Kody işletmezden öň, konsolda näme görkeziljekdigini kesgitläň:

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

Kody işletmezden öň, konsolda näme görkeziljekdigini kesgitläň:

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

Kody işletmezden öň, konsolda näme görkeziljekdigini kesgitläň:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et