⊗jsPmClLEA 261 of 505 menu

Fonksiyonların Sözcüksel Çevresinin JavaScript'te Uygulanması

Diyelim ki sonucu başka bir fonksiyon döndüren bir fonksiyonumuz var:

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

Eğer ana fonksiyonun herhangi bir değişkeni varsa, bu değişkenler döndürülen fonksiyonun sözcüksel çevresinde yer alacaktır:

function test() { let num = 1; // ana fonksiyonun değişkeni return function() { // sözcüksel çevre = {num: 1} } }

Döndürdüğümüz fonksiyonun koduna, değişkenin değerini console.log ile yazdıran bir kod ekleyelim:

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

Şimdi test ana fonksiyonunu çağıralım ve sonucunu func değişkenine kaydedelim:

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

func değişkenine döndürülen fonksiyon yazılacaktır. Fonksiyonumuzu çağıralım - sonucu num değişkeninin içeriğini yazdıracaktır:

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

Eğer num değişkenini fonksiyonun dışında yazdırmaya çalışırsak - erişilemez olacaktır:

function test() { let num = 1; return function() { console.log(num); } } console.log(num); // num değişkeni burada erişilemez

Gördüğünüz gibi, yerel num değişkeni fonksiyonumuzun sözcüksel çevresine bağlandı ve şimdi, bu fonksiyonu kodun herhangi bir yerinde çağırarak, num değişkeninin değerini alabileceğiz, bu değişkenin çağrı yapılan yerde kendi başına erişilemez olması bile önemli değil.

Aslında benzer bir sonuca, num değişkenini global yaparak da ulaşılabilir:

function test() { return function() { console.log(num); } } let num = 1; // global değişken let func = test(); func(); // 1 yazdırır

Ancak burada önemli bir fark olacak: yeni versiyonda num değişkeni fonksiyonların dışında değiştirilebilir (çünkü global), ancak eskisinde - değiştirilemez.

Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:

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

Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:

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

Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:

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

Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:

function test() { let num = 1; return function() { return num; } } let num = 2; let func = test(); console.log(func());
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet