⊗jsPmClLEA 261 of 505 menu

Функсияҳои JavaScript дар атрофи лексикӣ истифода бурда мешаванд

Бигзор мо функсияе дошта бошем, ки натиҷаи худ функсияи дигарро бармегардонад:

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

Агар функсияи волидайн ягон тағйирёбандаҳо дошта бошад, он гоҳ ин тағйирёбандаҳо дар атрофи лексикии функсияи баргардонидашуда дар хоҳанд буд:

function test() { let num = 1; // тағйирёбандаи функсияи волидайн return function() { // атрофи лексикӣ = {num: 1} } }

Дар рамзи функсияи баргардонидашудаи мо console.log нависед, ки қимати тағйирёбандаи num-ро барорад:

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

Ҳоло биёед функсияи волидайнро фаро бихонем test ва натиҷаи кори онро ба тағйирёбандаи func сабт кунем:

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

Ба тағйирёбандаи func функсияи баргардонидашуда сабт хоҳад шуд. Биёед функсияи худро фаро бихонем - ба ҳайси натиҷаи худ мундариҷаи тағйирёбандаи num-ро барорад:

function test() { let num = 1; return function() { console.log(num); } } let func = test(); func(); // 1-ро барорад

Агар ҳамоно талош кунед, ки тағйирёбандаи num-ро берун аз функсия бароред - он дастрас нахоҳад буд:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // тағйирёбандаи num дар ин ҷо дастрас нест

Чунон ки шумо мебинед, тағйирёбандаи маҳаллии num ба атрофи лексикии функсияи мо пайваст шуд ва ҳоло, функсияи худро дар ҳар як ҷои код фаро хонда, мо метавонем қимати тағйирёбандаи num-ро гирем, ҳатто агар дар ҷои фарохонӣ худи ин тағйирёбанда дастрас набошад.

Дар асл, натиҷаи монандро метавон ба даст овард, тағйирёбандаи num-ро глобалӣ сохтан:

function test() { return function() { console.log(num); } } let num = 1; // тағйирёбандаи глобалӣ let func = test(); func(); // 1-ро барорад

Аммо дар ин ҷо фарқи назаррас хоҳад буд: дар варианти нав тағйирёбандаи num-ро метавон берун аз функсияҳо тағйир дод (зеро он глобалӣ аст), ва дар қадими - наметавон.

Муайян кунед, кодро оғоз накарда, чӣ ба консоли барорад мешавад:

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

Муайян кунед, кодро оғоз накарда, чӣ ба консоли барорад мешавад:

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

Муайян кунед, кодро оғоз накарда, чӣ ба консоли барорад мешавад:

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

Муайян кунед, кодро оғоз накарда, чӣ ба консоли барорад мешавад:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
Тоҷикӣ
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 истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан