{"id":40213,"date":"2026-02-25T11:41:29","date_gmt":"2026-02-25T08:41:29","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=40213"},"modified":"2026-02-25T11:41:29","modified_gmt":"2026-02-25T08:41:29","slug":"hoisting-nedir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/","title":{"rendered":"Hoisting Nedir?"},"content":{"rendered":"<p><body><\/p>\n<p>\nJavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olup, sundu\u011fu dinamik ve esnek yap\u0131yla milyonlarca uygulaman\u0131n kalbinde yer al\u0131r. Bu esnekli\u011fin arkas\u0131nda yatan baz\u0131 mekanizmalar, dilin \u00e7al\u0131\u015fma prensiplerini anlamak i\u00e7in kritik \u00f6neme sahiptir. &#8220;Hoisting&#8221; de bu mekanizmalardan biridir. Ba\u015flang\u0131\u00e7ta kafa kar\u0131\u015ft\u0131r\u0131c\u0131 gibi g\u00f6r\u00fcnse de, Hoisting&#8217;i kavramak, daha temiz, hatas\u0131z ve \u00f6ng\u00f6r\u00fclebilir JavaScript kodu yazman\u0131n anahtar\u0131d\u0131r. Bu rehberde, Hoisting&#8217;in ne oldu\u011funu, farkl\u0131 de\u011fi\u015fken ve fonksiyon t\u00fcrleri \u00fczerindeki etkilerini, pratik sonu\u00e7lar\u0131n\u0131 ve en iyi uygulama y\u00f6ntemlerini detayl\u0131 bir \u015fekilde inceleyece\u011fiz.\n<\/p>\n<h2>Hoisting Nedir?<\/h2>\n<p>\nJavaScript&#8217;te Hoisting, kodunuzdaki de\u011fi\u015fken ve fonksiyon bildirimlerinin, fiziksel olarak yazd\u0131\u011f\u0131n\u0131z yerden ba\u011f\u0131ms\u0131z olarak, kapsayan ba\u011flamlar\u0131n\u0131n (scope) en \u00fcst\u00fcne ta\u015f\u0131nmas\u0131 olarak <i>kavramsal<\/i> bir davran\u0131\u015f\u0131 ifade eder. Yani, JavaScript motoru kodu \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce, t\u00fcm de\u011fi\u015fken ve fonksiyon bildirimlerini tarar ve onlar\u0131 mevcut kapsam\u0131n en \u00fcst\u00fcne &#8220;\u00e7\u0131kar\u0131r&#8221;. Bu durum, bir de\u011fi\u015fkeni veya fonksiyonu tan\u0131mlamadan \u00f6nce kullanabilmenize olanak tan\u0131r.\n<\/p>\n<p>\nAncak &#8220;ta\u015f\u0131nma&#8221; kelimesi burada yan\u0131lt\u0131c\u0131 olabilir. Ger\u00e7ekte kod sat\u0131rlar\u0131 fiziksel olarak yukar\u0131 ta\u015f\u0131nmaz. JavaScript motoru, kodu iki a\u015famada i\u015fler:\n<\/p>\n<ul>\n<li><strong>Derleme\/Yaratma Faz\u0131 (Compilation\/Creation Phase):<\/strong> Bu a\u015famada, JavaScript motoru kodu tarar ve t\u00fcm de\u011fi\u015fken (<code>var<\/code>, <code>let<\/code>, <code>const<\/code>) ve fonksiyon bildirimlerini (function declarations) haf\u0131zaya al\u0131r. <code>var<\/code> ile bildirilen de\u011fi\u015fkenlere varsay\u0131lan olarak <code>undefined<\/code> de\u011feri atan\u0131rken, fonksiyon bildirimleri tamamen haf\u0131zaya al\u0131n\u0131r. <code>let<\/code> ve <code>const<\/code> ile bildirilen de\u011fi\u015fkenler de hoisted edilir ancak ba\u015flang\u0131\u00e7ta bir de\u011fer almazlar ve &#8220;Temporal Dead Zone&#8221; (Ge\u00e7ici \u00d6l\u00fc B\u00f6lge) olarak bilinen bir duruma girerler.<\/li>\n<li><strong>Y\u00fcr\u00fctme Faz\u0131 (Execution Phase):<\/strong> Bu a\u015famada, kod sat\u0131r sat\u0131r \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. De\u011fi\u015fkenlere ger\u00e7ek de\u011ferleri atan\u0131r ve fonksiyonlar \u00e7a\u011fr\u0131l\u0131r.<\/li>\n<\/ul>\n<p>\nHoisting, bu ilk derleme faz\u0131nda ger\u00e7ekle\u015fen bir \u00f6n i\u015flem ad\u0131m\u0131d\u0131r. Bu sayede, kodun y\u00fcr\u00fctme a\u015famas\u0131na gelindi\u011finde, t\u00fcm bildirimler zaten biliniyor olur.\n<\/p>\n<h2>De\u011fi\u015fken Hoisting&#8217;i: <code>var<\/code>, <code>let<\/code>, ve <code>const<\/code><\/h2>\n<p>\nJavaScript&#8217;te de\u011fi\u015fken bildirmek i\u00e7in kullan\u0131lan anahtar kelimeler (<code>var<\/code>, <code>let<\/code>, <code>const<\/code>), Hoisting davran\u0131\u015f\u0131nda farkl\u0131l\u0131klar g\u00f6sterir. Bu farkl\u0131l\u0131klar\u0131 anlamak, \u00f6zellikle eski ve yeni JavaScript kod tabanlar\u0131nda kar\u015f\u0131la\u015f\u0131labilecek hatalar\u0131 \u00f6nlemek i\u00e7in kritik \u00f6neme sahiptir.\n<\/p>\n<h3><code>var<\/code> ile Hoisting<\/h3>\n<p>\n<code>var<\/code> ile bildirilen de\u011fi\u015fkenler, kapsayan fonksiyonun veya global scope&#8217;un en \u00fcst\u00fcne hoisted edilir ve varsay\u0131lan olarak <code>undefined<\/code> de\u011feri ile ba\u015flat\u0131l\u0131r. Bu, de\u011fi\u015fkenin tan\u0131mland\u0131\u011f\u0131 sat\u0131ra gelmeden \u00f6nce bile ona eri\u015filebilece\u011fi anlam\u0131na gelir, ancak bu eri\u015fim s\u0131ras\u0131nda de\u011feri <code>undefined<\/code> olacakt\u0131r.\n<\/p>\n<pre><code class=\"language-javascript\">\nconsole.log(benimDegiskenim); \/\/ undefined\nvar benimDegiskenim = \"Merhaba D\u00fcnya!\";\nconsole.log(benimDegiskenim); \/\/ Merhaba D\u00fcnya!\n\n\/\/ JavaScript motoru bu kodu asl\u0131nda \u015f\u00f6yle g\u00f6r\u00fcr:\n\/\/ var benimDegiskenim;\n\/\/ console.log(benimDegiskenim); \/\/ undefined\n\/\/ benimDegiskenim = \"Merhaba D\u00fcnya!\";\n\/\/ console.log(benimDegiskenim); \/\/ Merhaba D\u00fcnya!\n<\/code><\/pre>\n<p>\nBu davran\u0131\u015f, bazen beklenmedik hatalara yol a\u00e7abilir, \u00e7\u00fcnk\u00fc bir de\u011fi\u015fkenin <code>undefined<\/code> olmas\u0131, program\u0131n mant\u0131\u011f\u0131n\u0131 bozabilir.\n<\/p>\n<h3><code>let<\/code> ve <code>const<\/code> ile Hoisting (Temporal Dead Zone &#8211; TDZ)<\/h3>\n<p>\nECMAScript 2015 (ES6) ile tan\u0131t\u0131lan <code>let<\/code> ve <code>const<\/code> anahtar kelimeleri, <code>var<\/code>&#8216;\u0131n baz\u0131 sorunlar\u0131n\u0131 gidermek amac\u0131yla getirilmi\u015ftir ve farkl\u0131 bir Hoisting davran\u0131\u015f\u0131 sergilerler. <code>let<\/code> ve <code>const<\/code> ile bildirilen de\u011fi\u015fkenler de Hoisted edilir, yani kapsamlar\u0131n\u0131n en \u00fcst\u00fcne ta\u015f\u0131n\u0131rlar. Ancak, <code>var<\/code>&#8216;dan farkl\u0131 olarak, otomatik olarak <code>undefined<\/code> ile ba\u015flat\u0131lmazlar. Bunun yerine, bildirim sat\u0131rlar\u0131na ula\u015f\u0131lana kadar &#8220;Temporal Dead Zone&#8221; (TDZ) ad\u0131 verilen bir durumda kal\u0131rlar.\n<\/p>\n<p>\nTDZ, bir de\u011fi\u015fkenin kapsam\u0131n\u0131n ba\u015flang\u0131c\u0131ndan, bildiriminin yap\u0131ld\u0131\u011f\u0131 sat\u0131ra kadar olan s\u00fcreyi ifade eder. Bu s\u00fcre zarf\u0131nda de\u011fi\u015fkene eri\u015fmeye \u00e7al\u0131\u015fmak, bir <code>ReferenceError<\/code> hatas\u0131na neden olur.\n<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ console.log(ad); \/\/ ReferenceError: Cannot access 'ad' before initialization\nlet ad = \"Ali\";\nconsole.log(ad); \/\/ Ali\n\n\/\/ console.log(PI); \/\/ ReferenceError: Cannot access 'PI' before initialization\nconst PI = 3.14;\nconsole.log(PI); \/\/ 3.14\n<\/code><\/pre>\n<p>\nBu davran\u0131\u015f, geli\u015ftiricileri de\u011fi\u015fkenleri kullanmadan \u00f6nce bildirmeye zorlayarak daha g\u00fcvenli ve \u00f6ng\u00f6r\u00fclebilir kod yazmaya te\u015fvik eder. TDZ, <code>var<\/code>&#8216;\u0131n neden oldu\u011fu yayg\u0131n hatalardan bir\u00e7o\u011funu engeller.\n<\/p>\n<h2>Fonksiyon Hoisting&#8217;i: Bildirimler ve \u0130fadeler<\/h2>\n<p>\nDe\u011fi\u015fkenlerde oldu\u011fu gibi, fonksiyonlar da Hoisting davran\u0131\u015f\u0131nda farkl\u0131l\u0131klar g\u00f6sterir. JavaScript&#8217;te fonksiyonlar iki ana \u015fekilde tan\u0131mlanabilir: fonksiyon bildirimleri (function declarations) ve fonksiyon ifadeleri (function expressions).\n<\/p>\n<h3>Fonksiyon Bildirimleri (Function Declarations)<\/h3>\n<p>\nFonksiyon bildirimleri, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, bir fonksiyonu do\u011frudan tan\u0131mlayan yap\u0131lard\u0131r (\u00f6rne\u011fin, <code>function myFunction() { ... }<\/code>). Bu t\u00fcr fonksiyonlar, de\u011fi\u015fkenlerden farkl\u0131 olarak, hem bildirimleri hem de tan\u0131mlar\u0131 ile birlikte tamamen Hoisted edilir. Bu, fonksiyonu tan\u0131mland\u0131\u011f\u0131 yerden \u00f6nce \u00e7a\u011f\u0131rabilece\u011finiz anlam\u0131na gelir.\n<\/p>\n<pre><code class=\"language-javascript\">\nselamVer(); \/\/ Merhaba!\n\nfunction selamVer() {\n    console.log(\"Merhaba!\");\n}\n\n\/\/ JavaScript motoru bu kodu asl\u0131nda \u015f\u00f6yle g\u00f6r\u00fcr:\n\/\/ function selamVer() {\n\/\/     console.log(\"Merhaba!\");\n\/\/ }\n\/\/ selamVer(); \/\/ Merhaba!\n<\/code><\/pre>\n<p>\nBu, fonksiyon bildirimlerinin kodun herhangi bir yerinden \u00e7a\u011fr\u0131labilmesini sa\u011flar ve kodunuzu daha mod\u00fcler bir \u015fekilde d\u00fczenlemenize olanak tan\u0131r (\u00f6rne\u011fin, t\u00fcm yard\u0131mc\u0131 fonksiyonlar\u0131 dosyan\u0131n en alt\u0131na yaz\u0131p en \u00fcstten \u00e7a\u011f\u0131rma).\n<\/p>\n<h3>Fonksiyon \u0130fadeleri (Function Expressions)<\/h3>\n<p>\nFonksiyon ifadeleri, bir fonksiyonun bir de\u011fi\u015fkene atanmas\u0131yla olu\u015fturulur (\u00f6rne\u011fin, <code>const myFunction = function() { ... }<\/code>). Bu durumda, Hoisting davran\u0131\u015f\u0131, fonksiyonun atand\u0131\u011f\u0131 de\u011fi\u015fkenin Hoisting kurallar\u0131na tabidir.\n<\/p>\n<p>\nE\u011fer bir fonksiyon ifadesi <code>var<\/code> ile bildirilmi\u015f bir de\u011fi\u015fkene atan\u0131rsa, sadece de\u011fi\u015fken Hoisted edilir ve <code>undefined<\/code> ile ba\u015flat\u0131l\u0131r. Fonksiyonun kendisi, de\u011fi\u015fkenin atand\u0131\u011f\u0131 sat\u0131ra gelene kadar tan\u0131mlanmaz. Bu nedenle, fonksiyon ifadesini tan\u0131mland\u0131\u011f\u0131 yerden \u00f6nce \u00e7a\u011f\u0131rmaya \u00e7al\u0131\u015fmak bir <code>TypeError<\/code>&#8216;a (\u00e7\u00fcnk\u00fc <code>undefined<\/code> bir fonksiyon de\u011fildir) veya <code>ReferenceError<\/code>&#8216;a (e\u011fer de\u011fi\u015fken hi\u00e7 tan\u0131mlanmam\u0131\u015fsa) yol a\u00e7ar.\n<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ merhabaDunya(); \/\/ TypeError: merhabaDunya is not a function (\u00e7\u00fcnk\u00fc undefined'\u0131 \u00e7a\u011f\u0131rmaya \u00e7al\u0131\u015f\u0131yoruz)\nvar merhabaDunya = function() {\n    console.log(\"Merhaba D\u00fcnya!\");\n};\nmerhabaDunya(); \/\/ Merhaba D\u00fcnya!\n<\/code><\/pre>\n<p>\nE\u011fer fonksiyon ifadesi <code>let<\/code> veya <code>const<\/code> ile bildirilmi\u015f bir de\u011fi\u015fkene atan\u0131rsa, Hoisting davran\u0131\u015f\u0131 <code>let<\/code>\/<code>const<\/code> de\u011fi\u015fkenlerinin TDZ kural\u0131na uyar. Yani, de\u011fi\u015fken Hoisted edilir ancak bildirim sat\u0131r\u0131na ula\u015f\u0131lana kadar eri\u015filemez.\n<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ selamla(); \/\/ ReferenceError: Cannot access 'selamla' before initialization\nconst selamla = function() {\n    console.log(\"Selam!\");\n};\nselamla(); \/\/ Selam!\n<\/code><\/pre>\n<h3>Arrow Fonksiyonlar (Arrow Functions)<\/h3>\n<p>\nArrow fonksiyonlar (<code>=><\/code>), her zaman bir fonksiyon ifadesi olarak kabul edilir ve Hoisting davran\u0131\u015flar\u0131, atand\u0131klar\u0131 de\u011fi\u015fkenin t\u00fcr\u00fcne (<code>var<\/code>, <code>let<\/code>, <code>const<\/code>) g\u00f6re belirlenir. Genellikle <code>const<\/code> ile kullan\u0131ld\u0131klar\u0131 i\u00e7in, TDZ kurallar\u0131na tabidirler.\n<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ topla(5, 3); \/\/ ReferenceError: Cannot access 'topla' before initialization\nconst topla = (a, b) => a + b;\nconsole.log(topla(5, 3)); \/\/ 8\n<\/code><\/pre>\n<h2>Hoisting&#8217;in Pratik Etkileri ve En \u0130yi Uygulamalar<\/h2>\n<p>\nHoisting, JavaScript kodunuzun nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 derinden etkileyen bir dil \u00f6zelli\u011fidir. Bu mekanizmay\u0131 anlamak, potansiyel hatalar\u0131 \u00f6nlemek ve daha iyi kod yazmak i\u00e7in hayati \u00f6neme sahiptir.\n<\/p>\n<h3>Neden \u00d6nemli?<\/h3>\n<ul>\n<li><strong>Beklenmedik Davran\u0131\u015flar:<\/strong> \u00d6zellikle <code>var<\/code> ile Hoisting, bir de\u011fi\u015fkenin <code>undefined<\/code> olarak kullan\u0131lmas\u0131na yol a\u00e7arak beklenmedik sonu\u00e7lara veya hatalara neden olabilir.<\/li>\n<li><strong>Hata Ay\u0131klama (Debugging):<\/strong> Hoisting&#8217;in mant\u0131\u011f\u0131n\u0131 bilmemek, kodunuzdaki hatalar\u0131n kayna\u011f\u0131n\u0131 bulmay\u0131 zorla\u015ft\u0131rabilir. Bir de\u011fi\u015fkenin veya fonksiyonun neden tan\u0131mlanmad\u0131\u011f\u0131 hatas\u0131n\u0131 ald\u0131\u011f\u0131n\u0131zda, Hoisting&#8217;i g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z gerekir.<\/li>\n<li><strong>Kod Kalitesi ve Okunabilirlik:<\/strong> Hoisting&#8217;i do\u011fru anlamak ve buna g\u00f6re kod yazmak, daha okunabilir ve bak\u0131m\u0131 kolay kodlar olu\u015fturman\u0131za yard\u0131mc\u0131 olur.<\/li>\n<\/ul>\n<h3>Kar\u015f\u0131la\u015f\u0131labilecek Hatalar<\/h3>\n<ul>\n<li><code>undefined<\/code> de\u011ferine eri\u015fim (<code>var<\/code> ile).<\/li>\n<li><code>ReferenceError<\/code>: <code>Cannot access 'x' before initialization<\/code> (<code>let<\/code>\/<code>const<\/code> ile TDZ).<\/li>\n<li><code>TypeError<\/code>: <code>y is not a function<\/code> (fonksiyon ifadelerinin <code>var<\/code> ile erken \u00e7a\u011fr\u0131lmas\u0131).<\/li>\n<\/ul>\n<h3>En \u0130yi Uygulamalar (Best Practices)<\/h3>\n<p>\nHoisting&#8217;in do\u011fas\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak, JavaScript kodunuzu daha g\u00fcvenli ve okunakl\u0131 hale getirmek i\u00e7in a\u015fa\u011f\u0131daki en iyi uygulamalar\u0131 benimseyebilirsiniz:\n<\/p>\n<ul>\n<li><strong>De\u011fi\u015fkenleri ve Fonksiyonlar\u0131 Tan\u0131mlamadan \u00d6nce Bildirin:<\/strong> Bu, Hoisting&#8217;in neden olabilece\u011fi belirsizlikleri ortadan kald\u0131r\u0131r. T\u00fcm de\u011fi\u015fkenlerinizi ve fonksiyonlar\u0131n\u0131z\u0131 (\u00f6zellikle fonksiyon ifadelerini) kullanmadan \u00f6nce, kapsamlar\u0131n\u0131n ba\u015f\u0131nda bildirin. Bu, kodunuzun ak\u0131\u015f\u0131n\u0131 daha \u00f6ng\u00f6r\u00fclebilir hale getirir.<\/li>\n<li><strong><code>let<\/code> ve <code>const<\/code> Kullan\u0131m\u0131n\u0131 Tercih Edin:<\/strong> Modern JavaScript&#8217;te <code>var<\/code> yerine <code>let<\/code> ve <code>const<\/code> kullanmak, Temporal Dead Zone sayesinde de\u011fi\u015fkenlerin bildirilmeden \u00f6nce kullan\u0131lmas\u0131n\u0131 engelleyerek daha s\u0131k\u0131 bir hata kontrol\u00fc sa\u011flar. Bu, kodunuzdaki potansiyel hatalar\u0131 erken a\u015famada yakalaman\u0131za yard\u0131mc\u0131 olur.<\/li>\n<li><strong>Fonksiyon \u0130fadelerini Kullan\u0131rken Dikkat Edin:<\/strong> Fonksiyon ifadeleri (\u00f6zellikle <code>let<\/code> veya <code>const<\/code> ile atananlar) Hoisted edilmez. Bu nedenle, onlar\u0131 \u00e7a\u011f\u0131rmadan \u00f6nce tan\u0131mlad\u0131\u011f\u0131n\u0131zdan emin olun. E\u011fer bir fonksiyonu her yerden \u00e7a\u011f\u0131rabilme esnekli\u011fine ihtiyac\u0131n\u0131z varsa, fonksiyon bildirimlerini kullan\u0131n.<\/li>\n<\/ul>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>\nHoisting, JavaScript&#8217;in temel ancak s\u0131kl\u0131kla yanl\u0131\u015f anla\u015f\u0131lan bir \u00f6zelli\u011fidir. Kavramsal olarak bildirimlerin kapsamlar\u0131n\u0131n en \u00fcst\u00fcne ta\u015f\u0131nmas\u0131 anlam\u0131na gelir ve JavaScript motorunun derleme a\u015famas\u0131nda ger\u00e7ekle\u015ftirdi\u011fi bir \u00f6n i\u015flemdir. <code>var<\/code>, <code>let<\/code>, <code>const<\/code> de\u011fi\u015fkenleri ve fonksiyon bildirimleri ile ifadeleri aras\u0131nda farkl\u0131 Hoisting davran\u0131\u015flar\u0131 sergilenir. <code>var<\/code> de\u011fi\u015fkenleri <code>undefined<\/code> ile ba\u015flat\u0131l\u0131rken, <code>let<\/code> ve <code>const<\/code> de\u011fi\u015fkenleri Temporal Dead Zone&#8217;a girer. Fonksiyon bildirimleri tamamen Hoisted edilirken, fonksiyon ifadeleri atand\u0131klar\u0131 de\u011fi\u015fkenin Hoisting kurallar\u0131na tabidir. Bu farkl\u0131l\u0131klar\u0131 anlamak, daha temiz, hatas\u0131z ve bak\u0131m\u0131 kolay JavaScript kodu yazmak i\u00e7in kritik \u00f6neme sahiptir. Modern JavaScript&#8217;te <code>let<\/code> ve <code>const<\/code> kullan\u0131m\u0131, Hoisting&#8217;in neden olabilece\u011fi bir\u00e7ok hatay\u0131 \u00f6nleyerek daha g\u00fcvenli bir geli\u015ftirme ortam\u0131 sunar.\n<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt>Hoisting bir hata m\u0131d\u0131r?<\/dt>\n<dd>Hay\u0131r, Hoisting bir hata veya kusur de\u011fildir; JavaScript dilinin tasarlanma \u015feklinin bir par\u00e7as\u0131d\u0131r. Ancak yanl\u0131\u015f anla\u015f\u0131ld\u0131\u011f\u0131nda veya k\u00f6t\u00fc kullan\u0131ld\u0131\u011f\u0131nda hatalara yol a\u00e7abilir.<\/dd>\n<dt>Temporal Dead Zone (TDZ) nedir?<\/dt>\n<dd>TDZ, <code>let<\/code> ve <code>const<\/code> ile bildirilen bir de\u011fi\u015fkenin kapsam\u0131n\u0131n ba\u015flang\u0131c\u0131ndan, de\u011fi\u015fkenin bildiriminin yap\u0131ld\u0131\u011f\u0131 sat\u0131ra kadar olan b\u00f6lgedir. Bu b\u00f6lgede de\u011fi\u015fkene eri\u015fmeye \u00e7al\u0131\u015fmak <code>ReferenceError<\/code> hatas\u0131na neden olur.<\/dd>\n<dt>T\u00fcm JavaScript motorlar\u0131 Hoisting&#8217;i ayn\u0131 \u015fekilde mi uygular?<\/dt>\n<dd>Evet, ECMAScript standard\u0131 Hoisting davran\u0131\u015f\u0131n\u0131 tan\u0131mlar ve t\u00fcm uyumlu JavaScript motorlar\u0131 (V8, SpiderMonkey vb.) bu standarda uygun davranmak zorundad\u0131r.<\/dd>\n<dt><code>var<\/code> yerine <code>let<\/code> ve <code>const<\/code> kullanmak Hoisting&#8217;i tamamen ortadan kald\u0131r\u0131r m\u0131?<\/dt>\n<dd>Hay\u0131r, <code>let<\/code> ve <code>const<\/code> ile bildirilen de\u011fi\u015fkenler de Hoisted edilir. Ancak, <code>var<\/code>&#8216;dan farkl\u0131 olarak, bildirim sat\u0131rlar\u0131na ula\u015f\u0131lana kadar ba\u015flat\u0131lmazlar ve TDZ&#8217;ye girerler. Bu, Hoisting&#8217;in neden olabilece\u011fi bir\u00e7ok hatay\u0131 \u00f6nler ancak kavram\u0131 ortadan kald\u0131rmaz.<\/dd>\n<dt>Hoisting, sadece global kapsamda m\u0131 ge\u00e7erlidir?<\/dt>\n<dd>Hay\u0131r, Hoisting her kapsamda (global, fonksiyon kapsam\u0131, blok kapsam\u0131) ge\u00e7erlidir. De\u011fi\u015fkenler ve fonksiyonlar, kendi kapsayan kapsamlar\u0131n\u0131n en \u00fcst\u00fcne Hoisted edilir.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olup, sundu\u011fu dinamik ve esnek yap\u0131yla milyonlarca uygulaman\u0131n kalbinde yer al\u0131r. Bu es","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":[1],"tags":[],"class_list":{"0":"post-40213","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>Hoisting Nedir? - 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\/hoisting-nedir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hoisting Nedir?\" \/>\n<meta property=\"og:description\" content=\"JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olup, sundu\u011fu dinamik ve esnek yap\u0131yla milyonlarca uygulaman\u0131n kalbinde yer al\u0131r. Bu es\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-25T08:41:29+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=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Hoisting Nedir?\",\"datePublished\":\"2026-02-25T08:41:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/\"},\"wordCount\":1621,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/\",\"name\":\"Hoisting Nedir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-25T08:41:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hoisting Nedir?\"}]},{\"@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":"Hoisting Nedir? - 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\/hoisting-nedir\/","og_locale":"tr_TR","og_type":"article","og_title":"Hoisting Nedir?","og_description":"JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olup, sundu\u011fu dinamik ve esnek yap\u0131yla milyonlarca uygulaman\u0131n kalbinde yer al\u0131r. Bu es","og_url":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-25T08:41:29+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Hoisting Nedir?","datePublished":"2026-02-25T08:41:29+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/"},"wordCount":1621,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/","url":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/","name":"Hoisting Nedir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-25T08:41:29+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/hoisting-nedir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hoisting Nedir?"}]},{"@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\/40213","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=40213"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40213\/revisions"}],"predecessor-version":[{"id":40214,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40213\/revisions\/40214"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=40213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=40213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=40213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}