{"id":38805,"date":"2026-02-08T08:40:36","date_gmt":"2026-02-08T05:40:36","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38805"},"modified":"2026-02-08T08:40:36","modified_gmt":"2026-02-08T05:40:36","slug":"javascriptte-degisken-kapsamini-anlamak","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/","title":{"rendered":"JavaScript&#8217;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak"},"content":{"rendered":"<p><body><\/p>\n<h2>JavaScript&#8217;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak<\/h2>\n<p>JavaScript, dinamik ve esnek yap\u0131s\u0131yla web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir. Bu esnekli\u011fin \u00f6nemli bir par\u00e7as\u0131 da de\u011fi\u015fkenlerin nas\u0131l tan\u0131mland\u0131\u011f\u0131, nerede eri\u015filebilir oldu\u011fu ve ya\u015fam d\u00f6ng\u00fclerinin ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc belirleyen &#8220;kapsam&#8221; (scope) kavram\u0131d\u0131r. De\u011fi\u015fken kapsam\u0131n\u0131 derinlemesine anlamak, daha temiz, daha g\u00fcvenli, bak\u0131m\u0131 daha kolay ve hata olas\u0131l\u0131\u011f\u0131 daha d\u00fc\u015f\u00fck kod yazmak i\u00e7in kritik \u00f6neme sahiptir. Kapsam, bir de\u011fi\u015fkenin kodunuzun hangi b\u00f6lgelerinden eri\u015filebilece\u011fini kontrol eden kurallar b\u00fct\u00fcn\u00fcd\u00fcr. Bu makalede, JavaScript&#8217;teki farkl\u0131 kapsam t\u00fcrlerini, de\u011fi\u015fken bildirim anahtar kelimelerinin (<code>var<\/code>, <code>let<\/code>, <code>const<\/code>) kapsam \u00fczerindeki etkilerini, kapsam zincirini, kapatmalar\u0131 (closures) ve bu kavramlar\u0131n modern JavaScript geli\u015ftirme pratiklerindeki yerini ayr\u0131nt\u0131l\u0131 olarak inceleyece\u011fiz.<\/p>\n<h3>Kapsam Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Kapsam, bir de\u011fi\u015fkenin veya ifadenin ge\u00e7erli oldu\u011fu ba\u011flam\u0131 tan\u0131mlar. Basit\u00e7e s\u00f6ylemek gerekirse, bir de\u011fi\u015fkeni nerede tan\u0131mlad\u0131\u011f\u0131n\u0131za ba\u011fl\u0131 olarak, kodunuzun farkl\u0131 b\u00f6l\u00fcmlerinden bu de\u011fi\u015fkene eri\u015fip eri\u015femeyece\u011finizi belirleyen bir dizi kurald\u0131r. JavaScript&#8217;te kapsam\u0131n temel amac\u0131 \u015funlard\u0131r:<\/p>\n<p>1.  <strong>\u0130sim \u00c7ak\u0131\u015fmalar\u0131n\u0131 \u00d6nlemek:<\/strong> Ayn\u0131 isimde birden fazla de\u011fi\u015fken tan\u0131mland\u0131\u011f\u0131nda, kapsam, hangi de\u011fi\u015fkenin hangi ba\u011flamda kullan\u0131laca\u011f\u0131n\u0131 belirleyerek kar\u0131\u015f\u0131kl\u0131\u011f\u0131 \u00f6nler.<br \/>\n2.  <strong>Bellek Y\u00f6netimi:<\/strong> Kapsam d\u0131\u015f\u0131na \u00e7\u0131kan de\u011fi\u015fkenler genellikle bellekten temizlenir, bu da bellek kullan\u0131m\u0131n\u0131 optimize eder.<br \/>\n3.  <strong>G\u00fcvenlik ve Veri Gizlili\u011fi:<\/strong> Belirli verilere veya i\u015flevlere yaln\u0131zca yetkili kod par\u00e7alar\u0131n\u0131n eri\u015fmesini sa\u011flayarak veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korur.<br \/>\n4.  <strong>Mod\u00fclerlik:<\/strong> Kodun farkl\u0131 b\u00f6l\u00fcmlerinin birbirinden ba\u011f\u0131ms\u0131z \u00e7al\u0131\u015fmas\u0131n\u0131 ve birbirlerinin i\u00e7 durumlar\u0131n\u0131 bozmadan etkile\u015fim kurmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>JavaScript&#8217;te temel olarak \u00fc\u00e7 ana kapsam t\u00fcr\u00fc bulunur: Global Kapsam, Fonksiyon Kapsam\u0131 (Function Scope) ve Blok Kapsam\u0131 (Block Scope). Ayr\u0131ca, bu kapsamlar\u0131n nas\u0131l i\u00e7 i\u00e7e ge\u00e7ti\u011fini a\u00e7\u0131klayan Lexical Kapsam ve Kapsam Zinciri kavramlar\u0131 da vard\u0131r.<\/p>\n<h3>Global Kapsam (Global Scope)<\/h3>\n<p>Global kapsam, JavaScript dosyan\u0131zda herhangi bir fonksiyonun veya blo\u011fun d\u0131\u015f\u0131nda tan\u0131mlanan de\u011fi\u015fkenleri ifade eder. Global kapsamda tan\u0131mlanan de\u011fi\u015fkenlere, kodunuzun herhangi bir yerinden, yani t\u00fcm fonksiyonlardan ve bloklardan eri\u015filebilir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Global kapsamda tan\u0131mlanm\u0131\u015f de\u011fi\u015fken\nvar globalDegisken = \"Ben global bir de\u011fi\u015fkenim.\";\n\nfunction birinciFonksiyon() {\n    console.log(globalDegisken); \/\/ globalDegisken'e eri\u015filebilir\n}\n\nfunction ikinciFonksiyon() {\n    console.log(globalDegisken); \/\/ globalDegisken'e eri\u015filebilir\n}\n\nbirinciFonksiyon(); \/\/ \u00c7\u0131kt\u0131: Ben global bir de\u011fi\u015fkenim.\nikinciFonksiyon();  \/\/ \u00c7\u0131kt\u0131: Ben global bir de\u011fi\u015fkenim.\n\nconsole.log(globalDegisken); \/\/ \u00c7\u0131kt\u0131: Ben global bir de\u011fi\u015fkenim.<\/code><\/pre>\n<p>Global de\u011fi\u015fkenler, uygulaman\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc boyunca bellekte kal\u0131r. Bu durum, uygulaman\u0131n tamam\u0131nda eri\u015filebilir olmalar\u0131 avantaj\u0131n\u0131 sa\u011flarken, ayn\u0131 zamanda potansiyel sorunlar\u0131 da beraberinde getirir:<\/p>\n<p>*   <strong>\u0130sim \u00c7ak\u0131\u015fmalar\u0131:<\/strong> Farkl\u0131 kod par\u00e7alar\u0131 veya k\u00fct\u00fcphaneler ayn\u0131 global de\u011fi\u015fken ad\u0131n\u0131 kullanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131nda \u00e7ak\u0131\u015fmalar meydana gelebilir.<br \/>\n*   <strong>Global Ad Alan\u0131 Kirlili\u011fi:<\/strong> \u00c7ok fazla global de\u011fi\u015fken, kodun okunabilirli\u011fini ve bak\u0131m\u0131n\u0131 zorla\u015ft\u0131rabilir.<br \/>\n*   <strong>Hata Ay\u0131klama Zorlu\u011fu:<\/strong> Her yerden eri\u015filebilir olduklar\u0131 i\u00e7in, bir global de\u011fi\u015fkenin de\u011ferinin ne zaman ve nerede de\u011fi\u015fti\u011fini takip etmek karma\u015f\u0131k olabilir.<\/p>\n<p>Bu nedenlerle, modern JavaScript geli\u015ftirme pratiklerinde global de\u011fi\u015fken kullan\u0131m\u0131n\u0131 minimumda tutmak ve m\u00fcmk\u00fcn oldu\u011funca yerel kapsamlar\u0131 tercih etmek \u00f6nerilir.<\/p>\n<h3>Fonksiyon Kapsam\u0131 (Function Scope)<\/h3>\n<p>Fonksiyon kapsam\u0131, bir fonksiyonun i\u00e7inde <code>var<\/code> anahtar kelimesiyle tan\u0131mlanan de\u011fi\u015fkenleri ifade eder. Bu t\u00fcr de\u011fi\u015fkenler yaln\u0131zca tan\u0131mland\u0131klar\u0131 fonksiyon i\u00e7inde eri\u015filebilirler. Fonksiyon d\u0131\u015f\u0131nda bu de\u011fi\u015fkenlere eri\u015fmeye \u00e7al\u0131\u015fmak bir <code>ReferenceError<\/code> hatas\u0131na yol a\u00e7ar.<\/p>\n<pre><code class=\"language-javascript\">function ornekFonksiyon() {\n    var fonksiyonDegiskeni = \"Ben fonksiyon kapsam\u0131nday\u0131m.\";\n    console.log(fonksiyonDegiskeni); \/\/ Fonksiyon i\u00e7inde eri\u015filebilir\n}\n\nornekFonksiyon(); \/\/ \u00c7\u0131kt\u0131: Ben fonksiyon kapsam\u0131nday\u0131m.\n\/\/ console.log(fonksiyonDegiskeni); \/\/ Hata: ReferenceError: fonksiyonDegiskeni is not defined<\/code><\/pre>\n<p>Fonksiyon kapsam\u0131, de\u011fi\u015fkenleri fonksiyonun d\u0131\u015f d\u00fcnyas\u0131ndan izole ederek, isim \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nlemede ve veri gizlili\u011fini sa\u011flamada \u00f6nemli bir rol oynar. Bir fonksiyon her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, kendi kapsam\u0131 olu\u015fturulur ve o fonksiyonun i\u00e7inde tan\u0131mlanan de\u011fi\u015fkenler bu kapsamda ya\u015far. Fonksiyonun y\u00fcr\u00fct\u00fclmesi tamamland\u0131\u011f\u0131nda, bu kapsam genellikle yok edilir ve i\u00e7indeki de\u011fi\u015fkenler bellekten serbest b\u0131rak\u0131l\u0131r (ancak kapatmalar (closures) bu durumu de\u011fi\u015ftirebilir).<\/p>\n<h3>Blok Kapsam\u0131 (Block Scope)<\/h3>\n<p>ES6 (ECMAScript 2015) ile birlikte tan\u0131t\u0131lan <code>let<\/code> ve <code>const<\/code> anahtar kelimeleri, JavaScript&#8217;e &#8220;blok kapsam\u0131&#8221; kavram\u0131n\u0131 getirmi\u015ftir. Blok kapsam\u0131, bir \u00e7ift s\u00fcsl\u00fc parantez <code>{}<\/code> ile tan\u0131mlanan herhangi bir kod blo\u011funu ifade eder. Bu bloklar <code>if<\/code> ifadeleri, <code>for<\/code> d\u00f6ng\u00fcleri, <code>while<\/code> d\u00f6ng\u00fcleri veya sadece ba\u011f\u0131ms\u0131z bir kod blo\u011fu olabilir.<\/p>\n<p><code>let<\/code> ve <code>const<\/code> ile tan\u0131mlanan de\u011fi\u015fkenler yaln\u0131zca tan\u0131mland\u0131klar\u0131 blok i\u00e7inde eri\u015filebilirler. Blo\u011fun d\u0131\u015f\u0131ndan bu de\u011fi\u015fkenlere eri\u015fmeye \u00e7al\u0131\u015fmak bir <code>ReferenceError<\/code> hatas\u0131na yol a\u00e7ar.<\/p>\n<pre><code class=\"language-javascript\">if (true) {\n    let blokDegiskeniLet = \"Ben let ile tan\u0131mlanm\u0131\u015f bir blok de\u011fi\u015fkeniyim.\";\n    const blokDegiskeniConst = \"Ben const ile tan\u0131mlanm\u0131\u015f bir blok de\u011fi\u015fkeniyim.\";\n    console.log(blokDegiskeniLet);   \/\/ \u00c7\u0131kt\u0131: Ben let ile tan\u0131mlanm\u0131\u015f bir blok de\u011fi\u015fkeniyim.\n    console.log(blokDegiskeniConst); \/\/ \u00c7\u0131kt\u0131: Ben const ile tan\u0131mlanm\u0131\u015f bir blok de\u011fi\u015fkeniyim.\n}\n\n\/\/ console.log(blokDegiskeniLet);   \/\/ Hata: ReferenceError: blokDegiskeniLet is not defined\n\/\/ console.log(blokDegiskeniConst); \/\/ Hata: ReferenceError: blokDegiskeniConst is not defined\n\nfor (let i = 0; i < 3; i++) {\n    console.log(i); \/\/ i, her d\u00f6ng\u00fc iterasyonu i\u00e7in yeni bir blokta tan\u0131mlan\u0131r\n}\n\/\/ console.log(i); \/\/ Hata: ReferenceError: i is not defined<\/code><\/pre>\n<p><code>var<\/code> ile tan\u0131mlanan de\u011fi\u015fkenlerin blok kapsam\u0131 olmad\u0131\u011f\u0131n\u0131 unutmamak \u00f6nemlidir. <code>var<\/code> hala fonksiyon kapsaml\u0131d\u0131r, bu da <code>if<\/code> veya <code>for<\/code> bloklar\u0131 i\u00e7inde tan\u0131mlansalar bile d\u0131\u015far\u0131dan eri\u015filebilir olduklar\u0131 anlam\u0131na gelir:<\/p>\n<pre><code class=\"language-javascript\">if (true) {\n    var eskiDegisken = \"Ben var ile tan\u0131mlanm\u0131\u015f bir de\u011fi\u015fkenim.\";\n}\nconsole.log(eskiDegisken); \/\/ \u00c7\u0131kt\u0131: Ben var ile tan\u0131mlanm\u0131\u015f bir de\u011fi\u015fkenim. (Hata yok!)<\/code><\/pre>\n<p>Bu davran\u0131\u015f, <code>var<\/code> ile ilgili yayg\u0131n hata kaynaklar\u0131ndan biriydi ve <code>let<\/code> ile <code>const<\/code>'un getirdi\u011fi blok kapsam\u0131, bu t\u00fcr beklenmedik davran\u0131\u015flar\u0131 ortadan kald\u0131rarak daha \u00f6ng\u00f6r\u00fclebilir ve g\u00fcvenli kod yaz\u0131m\u0131n\u0131 te\u015fvik etti.<\/p>\n<h3>Lexical Kapsam (Lexical Scope)<\/h3>\n<p>Lexical kapsam (veya statik kapsam), JavaScript'in bir fonksiyonun de\u011fi\u015fkenlere eri\u015fimini nas\u0131l belirledi\u011fini a\u00e7\u0131klayan temel bir kavramd\u0131r. K\u0131saca, bir fonksiyonun kapsam\u0131, fonksiyonun nerede \u00e7a\u011fr\u0131ld\u0131\u011f\u0131na de\u011fil, <strong>kodda nerede tan\u0131mland\u0131\u011f\u0131na<\/strong> g\u00f6re belirlenir.<\/p>\n<p>Bir fonksiyon i\u00e7 i\u00e7e ba\u015fka bir fonksiyon tan\u0131mlad\u0131\u011f\u0131nda, i\u00e7teki fonksiyon d\u0131\u015ftaki (\u00fcst) fonksiyonun de\u011fi\u015fkenlerine eri\u015febilir. Bu, i\u00e7teki fonksiyonun kendi kapsam\u0131 i\u00e7inde bir de\u011fi\u015fken bulamazsa, bir \u00fcst kapsamda aramaya devam etmesiyle ger\u00e7ekle\u015fir. Bu arama, global kapsama ula\u015fana kadar devam eder.<\/p>\n<pre><code class=\"language-javascript\">function disFonksiyon() {\n    let disDegisken = \"Ben d\u0131\u015f fonksiyon de\u011fi\u015fkeniyim.\";\n\n    function icFonksiyon() {\n        let icDegisken = \"Ben i\u00e7 fonksiyon de\u011fi\u015fkeniyim.\";\n        console.log(disDegisken); \/\/ disDegisken'e eri\u015filebilir (lexical kapsam)\n        console.log(icDegisken);\n    }\n\n    icFonksiyon();\n    \/\/ console.log(icDegisken); \/\/ Hata: ReferenceError: icDegisken is not defined\n}\n\ndisFonksiyon();\n\/\/ \u00c7\u0131kt\u0131:\n\/\/ Ben d\u0131\u015f fonksiyon de\u011fi\u015fkeniyim.\n\/\/ Ben i\u00e7 fonksiyon de\u011fi\u015fkeniyim.<\/code><\/pre>\n<p><code>icFonksiyon<\/code>, <code>disFonksiyon<\/code> i\u00e7inde tan\u0131mland\u0131\u011f\u0131 i\u00e7in, <code>disFonksiyon<\/code>'un kapsam\u0131na lexical olarak ba\u011fl\u0131d\u0131r ve <code>disDegisken<\/code>'e eri\u015febilir. Bu \u00f6zellik, JavaScript'te kapatmalar\u0131n (closures) temelini olu\u015fturur.<\/p>\n<h3>De\u011fi\u015fken Bildirim Anahtar Kelimeleri ve Kapsam<\/h3>\n<p>JavaScript'te de\u011fi\u015fken tan\u0131mlamak i\u00e7in \u00fc\u00e7 ana anahtar kelime bulunur: <code>var<\/code>, <code>let<\/code> ve <code>const<\/code>. Bu anahtar kelimelerin her birinin kapsam ve di\u011fer davran\u0131\u015flar \u00fczerinde farkl\u0131 etkileri vard\u0131r.<\/p>\n<h4><code>var<\/code><\/h4>\n<p>*   <strong>Kapsam:<\/strong> Fonksiyon kapsaml\u0131d\u0131r. Global kapsamda tan\u0131mlan\u0131rsa global, bir fonksiyon i\u00e7inde tan\u0131mlan\u0131rsa o fonksiyona \u00f6zeldir. Blok kapsam\u0131 yoktur.<br \/>\n*   <strong>Hoisting (Yukar\u0131 \u00c7ekme):<\/strong> <code>var<\/code> ile tan\u0131mlanan de\u011fi\u015fkenler, i\u00e7inde bulunduklar\u0131 kapsam\u0131n en ba\u015f\u0131na \u00e7ekilir (hoist edilir). Ancak yaln\u0131zca bildirimi yukar\u0131 \u00e7ekilir, atamas\u0131 de\u011fil. Bu, bir de\u011fi\u015fkeni tan\u0131mlamadan \u00f6nce kullanabilece\u011finiz anlam\u0131na gelir, ancak de\u011feri <code>undefined<\/code> olacakt\u0131r.<br \/>\n*   <strong>Yeniden Bildirim:<\/strong> Ayn\u0131 kapsamda birden fazla kez <code>var<\/code> ile ayn\u0131 isimde de\u011fi\u015fken bildirebilirsiniz. Bu, genellikle beklenmedik davran\u0131\u015flara yol a\u00e7abilir.<br \/>\n*   <strong>Yeniden Atama:<\/strong> De\u011feri yeniden atanabilir.<\/p>\n<pre><code class=\"language-javascript\">console.log(x); \/\/ \u00c7\u0131kt\u0131: undefined (hoisting nedeniyle hata vermez)\nvar x = 10;\nconsole.log(x); \/\/ \u00c7\u0131kt\u0131: 10\n\nvar y = 20;\nvar y = 30; \/\/ Yeniden bildirim m\u00fcmk\u00fcn\nconsole.log(y); \/\/ \u00c7\u0131kt\u0131: 30\n\nfunction testVar() {\n    var a = 1;\n    if (true) {\n        var a = 2; \/\/ Ayn\u0131 fonksiyon kapsam\u0131 i\u00e7inde yeniden bildirim\n        console.log(a); \/\/ \u00c7\u0131kt\u0131: 2\n    }\n    console.log(a); \/\/ \u00c7\u0131kt\u0131: 2 (blok kapsam\u0131 yok)\n}\ntestVar();<\/code><\/pre>\n<h4><code>let<\/code><\/h4>\n<p>*   <strong>Kapsam:<\/strong> Blok kapsaml\u0131d\u0131r. Tan\u0131mland\u0131\u011f\u0131 <code>{}<\/code> blo\u011fu i\u00e7inde ge\u00e7erlidir.<br \/>\n*   <strong>Hoisting:<\/strong> <code>let<\/code> de\u011fi\u015fkenleri de teknik olarak hoist edilir, ancak <code>Temporal Dead Zone (TDZ)<\/code> ad\u0131 verilen bir duruma girerler. Bu, de\u011fi\u015fken tan\u0131mlanana kadar ona eri\u015fmeye \u00e7al\u0131\u015f\u0131rsan\u0131z <code>ReferenceError<\/code> hatas\u0131 alaca\u011f\u0131n\u0131z anlam\u0131na gelir. <code>var<\/code>'daki gibi <code>undefined<\/code> olmaz.<br \/>\n*   <strong>Yeniden Bildirim:<\/strong> Ayn\u0131 kapsamda <code>let<\/code> ile ayn\u0131 isimde bir de\u011fi\u015fkeni yeniden bildiremezsiniz. Bu bir <code>SyntaxError<\/code> hatas\u0131na yol a\u00e7ar.<br \/>\n*   <strong>Yeniden Atama:<\/strong> De\u011feri yeniden atanabilir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ console.log(z); \/\/ Hata: ReferenceError: Cannot access 'z' before initialization (TDZ)\nlet z = 10;\nconsole.log(z); \/\/ \u00c7\u0131kt\u0131: 10\n\n\/\/ let z = 20; \/\/ Hata: SyntaxError: Identifier 'z' has already been declared\n\nlet w = 20;\nw = 30; \/\/ Yeniden atama m\u00fcmk\u00fcn\nconsole.log(w); \/\/ \u00c7\u0131kt\u0131: 30\n\nfunction testLet() {\n    let b = 1;\n    if (true) {\n        let b = 2; \/\/ Farkl\u0131 blok kapsam\u0131nda yeni bir b de\u011fi\u015fkeni\n        console.log(b); \/\/ \u00c7\u0131kt\u0131: 2\n    }\n    console.log(b); \/\/ \u00c7\u0131kt\u0131: 1 (d\u0131\u015f bloktaki b)\n}\ntestLet();<\/code><\/pre>\n<h4><code>const<\/code><\/h4>\n<p>*   <strong>Kapsam:<\/strong> Blok kapsaml\u0131d\u0131r. <code>let<\/code> gibi, tan\u0131mland\u0131\u011f\u0131 <code>{}<\/code> blo\u011fu i\u00e7inde ge\u00e7erlidir.<br \/>\n*   <strong>Hoisting:<\/strong> <code>let<\/code> gibi <code>Temporal Dead Zone (TDZ)<\/code>'ye sahiptir. Tan\u0131mlanmadan \u00f6nce eri\u015filemez.<br \/>\n*   <strong>Yeniden Bildirim:<\/strong> Ayn\u0131 kapsamda <code>const<\/code> ile ayn\u0131 isimde bir de\u011fi\u015fkeni yeniden bildiremezsiniz. <code>SyntaxError<\/code> verir.<br \/>\n*   <strong>Yeniden Atama:<\/strong> <code>const<\/code> ile tan\u0131mlanan bir de\u011fi\u015fkene <strong>yeniden atama yap\u0131lamaz<\/strong>. Bir kez de\u011fer atand\u0131ktan sonra, bu de\u011fer de\u011fi\u015ftirilemez. Ancak, e\u011fer de\u011fi\u015fken bir obje veya dizi ise, objenin\/dizinin <strong>i\u00e7eri\u011fi<\/strong> de\u011fi\u015ftirilebilir, sadece referans\u0131 de\u011fi\u015ftirilemez.<br \/>\n*   <strong>Ba\u015flang\u0131\u00e7 De\u011feri:<\/strong> Tan\u0131mlan\u0131rken mutlaka bir ba\u015flang\u0131\u00e7 de\u011feri atanmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\/\/ const PI; \/\/ Hata: SyntaxError: Missing initializer in const declaration\nconst PI = 3.14;\nconsole.log(PI); \/\/ \u00c7\u0131kt\u0131: 3.14\n\n\/\/ PI = 3.14159; \/\/ Hata: TypeError: Assignment to constant variable.\n\nconst ayarlar = { tema: \"koyu\" };\nayarlar.tema = \"a\u00e7\u0131k\"; \/\/ Objenin i\u00e7eri\u011fi de\u011fi\u015ftirilebilir\nconsole.log(ayarlar); \/\/ \u00c7\u0131kt\u0131: { tema: \"a\u00e7\u0131k\" }\n\n\/\/ ayarlar = { tema: \"a\u00e7\u0131k\" }; \/\/ Hata: TypeError: Assignment to constant variable.<\/code><\/pre>\n<p>Modern JavaScript'te genellikle <code>var<\/code> yerine <code>let<\/code> ve <code>const<\/code> kullan\u0131lmas\u0131 \u00f6nerilir. De\u011feri de\u011fi\u015fmeyecek sabitler i\u00e7in <code>const<\/code>, de\u011feri de\u011fi\u015febilecek de\u011fi\u015fkenler i\u00e7in <code>let<\/code> tercih edilmelidir. Bu, kodun daha \u00f6ng\u00f6r\u00fclebilir ve hatas\u0131z olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Kapsam Zinciri (Scope Chain)<\/h3>\n<p>JavaScript bir de\u011fi\u015fkene eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, bu de\u011fi\u015fkenin de\u011ferini bulmak i\u00e7in belirli bir s\u0131ray\u0131 takip eder. Bu s\u0131raya \"kapsam zinciri\" denir. Bir fonksiyonun veya kod blo\u011funun kendi kapsam\u0131 i\u00e7inde bir de\u011fi\u015fkeni bulamazsa, bir \u00fcst (d\u0131\u015f) kapsama bakar. Bu arama, global kapsama ula\u015fana kadar devam eder.<\/p>\n<pre><code class=\"language-javascript\">let globalVar = \"Global\";\n\nfunction disFonksiyon() {\n    let disVar = \"D\u0131\u015f\";\n\n    function icFonksiyon() {\n        let icVar = \"\u0130\u00e7\";\n        console.log(icVar);    \/\/ Kendi kapsam\u0131: \u0130\u00e7\n        console.log(disVar);   \/\/ Bir \u00fcst kapsam: D\u0131\u015f\n        console.log(globalVar); \/\/ En \u00fcst kapsam: Global\n        \/\/ console.log(olmayanVar); \/\/ Hata: ReferenceError\n    }\n\n    icFonksiyon();\n}\n\ndisFonksiyon();<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>icFonksiyon<\/code> i\u00e7inde <code>icVar<\/code>, <code>disVar<\/code> ve <code>globalVar<\/code>'a eri\u015fim s\u0131ras\u0131 \u015f\u00f6yledir:<\/p>\n<p>1.  <code>icFonksiyon<\/code> kendi kapsam\u0131na bakar. <code>icVar<\/code>'\u0131 bulur ve kullan\u0131r.<br \/>\n2.  <code>disVar<\/code>'\u0131 ararken kendi kapsam\u0131nda bulamaz. Bir \u00fcst kapsama, yani <code>disFonksiyon<\/code>'un kapsam\u0131na bakar. <code>disVar<\/code>'\u0131 burada bulur ve kullan\u0131r.<br \/>\n3.  <code>globalVar<\/code>'\u0131 ararken kendi ve bir \u00fcst kapsamda bulamaz. En \u00fcst kapsama, yani global kapsama bakar. <code>globalVar<\/code>'\u0131 burada bulur ve kullan\u0131r.<br \/>\n4.  E\u011fer bir de\u011fi\u015fken t\u00fcm kapsam zincirinde bulunamazsa, JavaScript bir <code>ReferenceError<\/code> hatas\u0131 f\u0131rlat\u0131r.<\/p>\n<p>Kapsam zinciri, lexical kapsam\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131n pratik bir uygulamas\u0131d\u0131r ve kapatmalar\u0131n temelini olu\u015fturur.<\/p>\n<h3>Kapatmalar (Closures) ve Kapsam<\/h3>\n<p>Kapatma (closure), JavaScript'teki en g\u00fc\u00e7l\u00fc ve bazen kafa kar\u0131\u015ft\u0131r\u0131c\u0131 kavramlardan biridir. Basit\u00e7e ifade etmek gerekirse, bir kapatma, <strong>i\u00e7 bir fonksiyonun, tan\u0131mland\u0131\u011f\u0131 d\u0131\u015f fonksiyonun kapsam\u0131na eri\u015fimini s\u00fcrd\u00fcrmesi<\/strong> durumudur, hatta d\u0131\u015f fonksiyonun y\u00fcr\u00fct\u00fclmesi tamamlan\u0131p geri d\u00f6nse bile.<\/p>\n<p>Bu, i\u00e7 fonksiyonun \"lexical ortam\u0131n\u0131\" (yani, tan\u0131mland\u0131\u011f\u0131 yerdeki de\u011fi\u015fkenleri) \"hat\u0131rlamas\u0131\" anlam\u0131na gelir.<\/p>\n<pre><code class=\"language-javascript\">function sayacOlusturucu() {\n    let sayac = 0; \/\/ Bu de\u011fi\u015fken d\u0131\u015f fonksiyonun kapsam\u0131ndad\u0131r\n\n    return function() { \/\/ Bu i\u00e7 fonksiyon bir kapatmad\u0131r\n        sayac++;\n        console.log(sayac);\n    };\n}\n\nconst sayac1 = sayacOlusturucu();\nsayac1(); \/\/ \u00c7\u0131kt\u0131: 1\nsayac1(); \/\/ \u00c7\u0131kt\u0131: 2\n\nconst sayac2 = sayacOlusturucu(); \/\/ Yeni bir sayac \u00f6rne\u011fi\nsayac2(); \/\/ \u00c7\u0131kt\u0131: 1 (sayac1'den ba\u011f\u0131ms\u0131z)\nsayac2(); \/\/ \u00c7\u0131kt\u0131: 2<\/code><\/pre>\n<p>Bu \u00f6rnekte:<\/p>\n<p>1.  <code>sayacOlusturucu<\/code> fonksiyonu \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, <code>sayac<\/code> ad\u0131nda yerel bir de\u011fi\u015fken olu\u015fturulur ve de\u011feri 0'a ayarlan\u0131r.<br \/>\n2.  <code>sayacOlusturucu<\/code> daha sonra ba\u015fka bir (anonim) fonksiyon d\u00f6nd\u00fcr\u00fcr. Bu i\u00e7 fonksiyon, <code>sayac<\/code> de\u011fi\u015fkenine eri\u015fimi olan bir kapatmad\u0131r.<br \/>\n3.  <code>sayacOlusturucu<\/code> fonksiyonunun y\u00fcr\u00fct\u00fclmesi tamamland\u0131\u011f\u0131nda, normalde <code>sayac<\/code> de\u011fi\u015fkeninin bellekten temizlenmesi beklenir. Ancak d\u00f6nd\u00fcr\u00fclen i\u00e7 fonksiyon hala <code>sayac<\/code>'a referans verdi\u011fi i\u00e7in, <code>sayac<\/code> de\u011fi\u015fkeni bellekten temizlenmez ve i\u00e7 fonksiyon taraf\u0131ndan \"hat\u0131rlan\u0131r\".<br \/>\n4.  Her <code>sayac1()<\/code> \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, ayn\u0131 <code>sayac<\/code> de\u011fi\u015fkeninin de\u011feri art\u0131r\u0131l\u0131r.<br \/>\n5.  <code>sayac2<\/code> olu\u015fturuldu\u011funda, <code>sayacOlusturucu<\/code> tekrar \u00e7a\u011fr\u0131l\u0131r ve yeni bir <code>sayac<\/code> de\u011fi\u015fkeni olu\u015fturulur. Bu <code>sayac<\/code>, <code>sayac1<\/code>'in kulland\u0131\u011f\u0131 <code>sayac<\/code>'tan tamamen ba\u011f\u0131ms\u0131zd\u0131r.<\/p>\n<p>Kapatmalar\u0131n kullan\u0131m alanlar\u0131 olduk\u00e7a geni\u015ftir:<\/p>\n<p>*   <strong>Veri Gizlili\u011fi (Private Variables):<\/strong> D\u0131\u015far\u0131dan do\u011frudan eri\u015filemeyen \"\u00f6zel\" de\u011fi\u015fkenler olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong>Mod\u00fcl Desenleri:<\/strong> JavaScript'te mod\u00fcler kod yazmak i\u00e7in temel bir yap\u0131d\u0131r.<br \/>\n*   <strong>Fonksiyonel Programlama:<\/strong> K\u0131smi uygulama (partial application) ve currying gibi tekniklerde kullan\u0131l\u0131r.<br \/>\n*   <strong>Olay \u0130\u015fleyicileri:<\/strong> Bir olay\u0131n ger\u00e7ekle\u015fti\u011fi zaman, o olay\u0131n ger\u00e7ekle\u015fti\u011fi ba\u011flamdaki de\u011fi\u015fkenlere eri\u015fimi korumak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>\"Strict Mode\" ve Kapsam<\/h3>\n<p>JavaScript'in \"strict mode\" (kat\u0131 mod) \u00f6zelli\u011fi, kodun belirli \"g\u00fcvensiz\" eylemleri ger\u00e7ekle\u015ftirmesini engelleyerek veya hata f\u0131rlatarak daha g\u00fcvenli ve hata ay\u0131klamas\u0131 daha kolay kod yazmaya yard\u0131mc\u0131 olur. Kapsam a\u00e7\u0131s\u0131ndan, strict mode'un en belirgin etkilerinden biri, <strong>bildirilmemi\u015f de\u011fi\u015fkenlerin kullan\u0131m\u0131n\u0131 yasaklamas\u0131d\u0131r.<\/strong><\/p>\n<p>Normal (non-strict) modda, bir de\u011fi\u015fkene <code>var<\/code>, <code>let<\/code> veya <code>const<\/code> ile bildirmeden bir de\u011fer atarsan\u0131z, JavaScript otomatik olarak global kapsamda o isimde bir de\u011fi\u015fken olu\u015fturur. Bu, genellikle istenmeyen bir durumdur ve hatalara yol a\u00e7abilir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Non-strict mode (taray\u0131c\u0131da veya Node.js'de varsay\u0131lan)\nfunction nonStrictOrnek() {\n    undeclaredVar = \"Merhaba\"; \/\/ Hata vermez, global bir de\u011fi\u015fken olu\u015fturur\n}\nnonStrictOrnek();\nconsole.log(undeclaredVar); \/\/ \u00c7\u0131kt\u0131: Merhaba<\/code><\/pre>\n<p>Strict mode'da ise bu t\u00fcr bir davran\u0131\u015f bir <code>ReferenceError<\/code> hatas\u0131na yol a\u00e7ar:<\/p>\n<pre><code class=\"language-javascript\">\"use strict\"; \/\/ Strict mode'u etkinle\u015ftir\n\nfunction strictOrnek() {\n    \/\/ undeclaredVarStrict = \"Merhaba Strict\"; \/\/ Hata: ReferenceError: undeclaredVarStrict is not defined\n}\nstrictOrnek();\n\/\/ console.log(undeclaredVarStrict);<\/code><\/pre>\n<p>Strict mode, kodunuzu dosyan\u0131n ba\u015f\u0131na veya bir fonksiyonun ba\u015f\u0131na <code>\"use strict\";<\/code> dizesini ekleyerek etkinle\u015ftirilir. Modern JavaScript projelerinde genellikle ara\u00e7lar (\u00f6rne\u011fin Babel, Webpack) veya mod\u00fcl sistemleri (ES Modules) arac\u0131l\u0131\u011f\u0131yla otomatik olarak strict mode'da \u00e7al\u0131\u015f\u0131l\u0131r, bu da bu t\u00fcr kapsam hatalar\u0131n\u0131n erken tespit edilmesine yard\u0131mc\u0131 olur.<\/p>\n<h3>Kapsam Y\u00f6netimi \u0130\u00e7in En \u0130yi Uygulamalar<\/h3>\n<p>De\u011fi\u015fken kapsam\u0131n\u0131 iyi anlamak, daha iyi JavaScript kodu yazman\u0131n anahtar\u0131d\u0131r. \u0130\u015fte baz\u0131 en iyi uygulamalar:<\/p>\n<p>1.  <strong><code>let<\/code> ve <code>const<\/code>'u <code>var<\/code>'a Tercih Edin:<\/strong> Modern JavaScript'te, blok kapsaml\u0131 <code>let<\/code> ve <code>const<\/code>, <code>var<\/code>'\u0131n neden oldu\u011fu bir\u00e7ok yayg\u0131n hatay\u0131 \u00f6nler. De\u011feri de\u011fi\u015fmeyecekse <code>const<\/code>, de\u011fi\u015fecekse <code>let<\/code> kullan\u0131n. <code>var<\/code> kullan\u0131m\u0131ndan m\u00fcmk\u00fcn oldu\u011funca ka\u00e7\u0131n\u0131n.<br \/>\n2.  <strong>Global De\u011fi\u015fkenleri Minimumda Tutun:<\/strong> Global kapsam\u0131 kirletmekten ka\u00e7\u0131n\u0131n. M\u00fcmk\u00fcn oldu\u011funca de\u011fi\u015fkenleri yerel (fonksiyon veya blok) kapsamda tan\u0131mlay\u0131n. Bu, isim \u00e7ak\u0131\u015fmalar\u0131n\u0131 azalt\u0131r ve kodun mod\u00fclerli\u011fini art\u0131r\u0131r.<br \/>\n3.  <strong>Kapatmalar\u0131 Ak\u0131ll\u0131ca Kullan\u0131n:<\/strong> Kapatmalar g\u00fc\u00e7l\u00fcd\u00fcr ancak dikkatli kullan\u0131lmal\u0131d\u0131r. Bellek s\u0131z\u0131nt\u0131lar\u0131na yol a\u00e7abilirler e\u011fer kapatmalar gereksiz yere b\u00fcy\u00fck referanslar\u0131 tutarsa. Ancak, veri gizlili\u011fi ve mod\u00fcl desenleri i\u00e7in vazge\u00e7ilmezdirler.<br \/>\n4.  <strong>De\u011fi\u015fken \u0130simlendirmelerinde Anlaml\u0131 Olun:<\/strong> De\u011fi\u015fkenlerinizi a\u00e7\u0131klay\u0131c\u0131 adlarla isimlendirin. Bu, \u00f6zellikle farkl\u0131 kapsamlar aras\u0131nda ayn\u0131 isimlerin kullan\u0131ld\u0131\u011f\u0131 durumlarda (ancak bu da genellikle ka\u00e7\u0131n\u0131lmas\u0131 gereken bir durumdur) kodun okunabilirli\u011fini art\u0131r\u0131r.<br \/>\n5.  <strong><code>use strict<\/code> Kullan\u0131n:<\/strong> Strict mode, JavaScript'in baz\u0131 \"hatal\u0131\" davran\u0131\u015flar\u0131n\u0131 yakalayarak daha g\u00fcvenli kod yazman\u0131za yard\u0131mc\u0131 olur. Modern geli\u015ftirme ortamlar\u0131nda genellikle varsay\u0131lan olarak etkindir.<br \/>\n6.  <strong>Mod\u00fcl Sistemlerini Kullan\u0131n:<\/strong> ES Mod\u00fclleri (<code>import<\/code>\/<code>export<\/code>) veya CommonJS (<code>require<\/code>\/<code>module.exports<\/code>) gibi mod\u00fcl sistemleri, kodunuzu ayr\u0131 dosyalara b\u00f6lmenizi ve her dosyan\u0131n kendi \u00f6zel kapsam\u0131na sahip olmas\u0131n\u0131 sa\u011flar. Bu, global ad alan\u0131 kirlili\u011fini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JavaScript'te de\u011fi\u015fken kapsam\u0131n\u0131 anlamak, sadece dilin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 bilmekten \u00f6te, daha sa\u011flam, bak\u0131m\u0131 kolay ve hatas\u0131z uygulamalar geli\u015ftirmenin temelini olu\u015fturur. Global, fonksiyon ve blok kapsamlar\u0131 aras\u0131ndaki farklar\u0131 kavramak, <code>var<\/code>, <code>let<\/code> ve <code>const<\/code> anahtar kelimelerinin davran\u0131\u015flar\u0131n\u0131 bilmek ve lexical kapsam ile kapsam zincirinin nas\u0131l i\u015fledi\u011fini idrak etmek, her JavaScript geli\u015ftiricisi i\u00e7in vazge\u00e7ilmez becerilerdir.<\/p>\n<p>Kapatmalar gibi ileri d\u00fczey kapsam mekanizmalar\u0131, JavaScript'in fonksiyonel g\u00fcc\u00fcn\u00fc ortaya \u00e7\u0131kar\u0131rken, strict mode ve modern mod\u00fcl sistemleri ise kodun g\u00fcvenli\u011fini ve organizasyonunu art\u0131r\u0131r. Bu kavramlara hakim olmak, sadece mevcut sorunlar\u0131 \u00e7\u00f6zmekle kalmayacak, ayn\u0131 zamanda gelecekte kar\u015f\u0131la\u015fabilece\u011finiz karma\u015f\u0131k senaryolara kar\u015f\u0131 sizi daha haz\u0131rl\u0131kl\u0131 hale getirecektir. Unutmay\u0131n, iyi y\u00f6netilen kapsam, temiz ve verimli JavaScript kodunun kalbidir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript&#8217;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak\nJavaScript, dinamik ve esnek yap\u0131s\u0131yla web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir. Bu esnekli\u011fin","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[129],"tags":[],"class_list":{"0":"post-38805","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-javascript","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript&#039;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript&#039;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak\" \/>\n<meta property=\"og:description\" content=\"JavaScript&#039;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak JavaScript, dinamik ve esnek yap\u0131s\u0131yla web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir. Bu esnekli\u011fin\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-08T05:40:36+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak\",\"datePublished\":\"2026-02-08T05:40:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/\"},\"wordCount\":2391,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Javascript\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/\",\"name\":\"JavaScript'te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-08T05:40:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JavaScript'te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak","og_description":"JavaScript'te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak JavaScript, dinamik ve esnek yap\u0131s\u0131yla web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir. Bu esnekli\u011fin","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-08T05:40:36+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak","datePublished":"2026-02-08T05:40:36+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/"},"wordCount":2391,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Javascript"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/","name":"JavaScript'te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-08T05:40:36+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-degisken-kapsamini-anlamak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;te De\u011fi\u015fken Kapsam\u0131n\u0131 Anlamak"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38805"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38805\/revisions"}],"predecessor-version":[{"id":38806,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38805\/revisions\/38806"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}