{"id":43109,"date":"2026-07-06T08:00:49","date_gmt":"2026-07-06T05:00:49","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=43109"},"modified":"2026-07-06T08:01:13","modified_gmt":"2026-07-06T05:01:13","slug":"javascriptte-varsayilan-parametreleri-anlamak-default-parameters","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/","title":{"rendered":"JavaScript&#8217;te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)"},"content":{"rendered":"<h2>JavaScript&#8217;te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)<\/h2>\n<p>Modern JavaScript geli\u015fim s\u00fcrecinde, dilin esnekli\u011fini ve okunabilirli\u011fini art\u0131rmak amac\u0131yla bir\u00e7ok yeni \u00f6zellik eklenmi\u015ftir. Bu \u00f6zelliklerden en \u00f6nemlilerinden biri, ECMAScript 2015 (ES6) ile hayat\u0131m\u0131za giren &#8220;Varsay\u0131lan Parametreler&#8221; (Default Parameters) \u00f6zelli\u011fidir. Fonksiyonlar\u0131n daha g\u00fcvenli, hataya dayan\u0131kl\u0131 ve temiz bir \u015fekilde yaz\u0131lmas\u0131n\u0131 sa\u011flayan bu yap\u0131, geli\u015ftiricileri ge\u00e7mi\u015fteki hantal ve hata yapmaya a\u00e7\u0131k kontrol mekanizmalar\u0131ndan kurtarm\u0131\u015ft\u0131r.<\/p>\n<p>Bu makalede, JavaScript&#8217;te varsay\u0131lan parametrelerin \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131, ES6 \u00f6ncesindeki yakla\u015f\u0131mlarla kar\u015f\u0131la\u015ft\u0131rmas\u0131n\u0131, teknik detaylar\u0131n\u0131, geli\u015fmi\u015f kullan\u0131m senaryolar\u0131n\u0131 ve bu \u00f6zelli\u011fi kullan\u0131rken dikkat edilmesi gereken kritik noktalar\u0131 derinlemesine inceleyece\u011fiz.<\/p>\n<h3>1. Ge\u00e7mi\u015fe Bak\u0131\u015f: ES5 D\u00f6neminde Varsay\u0131lan De\u011fer Atama<\/h3>\n<p>ES6 \u00f6ncesinde JavaScript, fonksiyon tan\u0131mlar\u0131nda varsay\u0131lan parametre de\u011ferlerini do\u011frudan desteklemiyordu. Bir fonksiyona beklenenden daha az arg\u00fcman g\u00f6nderildi\u011finde, eksik olan parametreler otomatik olarak <code>undefined<\/code> de\u011ferini al\u0131yordu. Bu durum, \u00f6zellikle matematiksel i\u015flemler veya nesne manip\u00fclasyonlar\u0131 i\u00e7eren fonksiyonlarda \u00e7al\u0131\u015fma zaman\u0131 hatalar\u0131na (runtime errors) yol a\u00e7abiliyordu.<\/p>\n<p>Geli\u015ftiriciler bu sorunu a\u015fmak i\u00e7in fonksiyon g\u00f6vdesi i\u00e7erisinde manuel kontroller yapmak zorundayd\u0131. En yayg\u0131n kullan\u0131lan iki y\u00f6ntem mant\u0131ksal VEYA (<code>||<\/code>) operat\u00f6r\u00fc ve <code>typeof<\/code> kontrol\u00fcyd\u00fc.<\/p>\n<h4>Mant\u0131ksal VEYA (<code>||<\/code>) Operat\u00f6r\u00fc ile \u00c7\u00f6z\u00fcm<\/h4>\n<p>En basit ve en s\u0131k tercih edilen y\u00f6ntem, parametrenin varl\u0131\u011f\u0131n\u0131 mant\u0131ksal VEYA operat\u00f6r\u00fc ile kontrol etmekti:<\/p>\n<pre><code class=\"language-javascript\">function selamla(isim) {\n    var kullaniciAdi = isim || \"Misafir\";\n    console.log(\"Merhaba \" + kullaniciAdi);\n}\n\nselamla(\"Ahmet\"); \/\/ \u00c7\u0131kt\u0131: Merhaba Ahmet\nselamla();        \/\/ \u00c7\u0131kt\u0131: Merhaba Misafir<\/code><\/pre>\n<p>Bu y\u00f6ntem ilk bak\u0131\u015fta pratik g\u00f6r\u00fcnse de, JavaScript&#8217;in &#8220;falsy&#8221; (yanl\u0131\u015f kabul edilen) de\u011ferler d\u00fcnyas\u0131 nedeniyle ciddi yan etkilere sahipti. JavaScript; <code>0<\/code>, bo\u015f dize (<code>\"\"<\/code>), <code>false<\/code>, <code>null<\/code> ve <code>NaN<\/code> de\u011ferlerini mant\u0131ksal olarak <code>false<\/code> kabul eder. Dolay\u0131s\u0131yla, bu de\u011ferlerden biri ge\u00e7erli bir arg\u00fcman olarak fonksiyona g\u00f6nderildi\u011finde, mant\u0131ksal VEYA operat\u00f6r\u00fc bu de\u011feri yok sayarak varsay\u0131lan de\u011feri at\u0131yordu:<\/p>\n<pre><code class=\"language-javascript\">function vergiHesapla(tutar, oran) {\n    var gecerliOran = oran || 0.18;\n    return tutar * gecerliOran;\n}\n\nconsole.log(vergiHesapla(100, 0.08)); \/\/ \u00c7\u0131kt\u0131: 8 (Do\u011fru)\nconsole.log(vergiHesapla(100, 0));    \/\/ \u00c7\u0131kt\u0131: 18 (Hatal\u0131! 0 yerine 0.18 kullan\u0131ld\u0131)<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, vergi oran\u0131n\u0131 bilerek <code>0<\/code> (vergisiz) girmek istedi\u011fimizde, sistem <code>0<\/code> de\u011ferini &#8220;falsy&#8221; olarak de\u011ferlendirmi\u015f ve varsay\u0131lan olan <code>0.18<\/code> de\u011ferini uygulam\u0131\u015ft\u0131r. Bu, finansal uygulamalarda kabul edilemez bir hatad\u0131r.<\/p>\n<h4><code>typeof<\/code> Operat\u00f6r\u00fc ile G\u00fcvenli \u00c7\u00f6z\u00fcm<\/h4>\n<p>Falsy de\u011fer hatas\u0131ndan ka\u00e7\u0131nmak i\u00e7in geli\u015ftiriciler parametrenin t\u00fcr\u00fcn\u00fc <code>typeof<\/code> ile kontrol etmek zorundayd\u0131:<\/p>\n<pre><code class=\"language-javascript\">function vergiHesapla(tutar, oran) {\n    var gecerliOran = (typeof oran !== 'undefined') ? oran : 0.18;\n    return tutar * gecerliOran;\n}\n\nconsole.log(vergiHesapla(100, 0)); \/\/ \u00c7\u0131kt\u0131: 0 (Do\u011fru)<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m kesinlikle g\u00fcvenli olsa da, kodun okunabilirli\u011fini ciddi \u015fekilde d\u00fc\u015f\u00fcr\u00fcyor ve her parametre i\u00e7in tekrar eden, hantal kod bloklar\u0131 yaz\u0131lmas\u0131na neden oluyordu.<\/p>\n<h3>2. ES6 ile Gelen Modern \u00c7\u00f6z\u00fcm: Varsay\u0131lan Parametreler<\/h3>\n<p>ES6 ile birlikte gelen varsay\u0131lan parametreler, yukar\u0131da bahsedilen t\u00fcm karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rd\u0131. Art\u0131k bir parametrenin varsay\u0131lan de\u011feri, do\u011frudan fonksiyon imzas\u0131nda (tan\u0131mlamas\u0131nda) atanabilmektedir:<\/p>\n<pre><code class=\"language-javascript\">function vergiHesapla(tutar, oran = 0.18) {\n    return tutar * oran;\n}\n\nconsole.log(vergiHesapla(100));    \/\/ \u00c7\u0131kt\u0131: 18 (Varsay\u0131lan de\u011fer kullan\u0131ld\u0131)\nconsole.log(vergiHesapla(100, 0)); \/\/ \u00c7\u0131kt\u0131: 0 (G\u00f6nderilen 0 de\u011feri korundu)<\/code><\/pre>\n<p>Bu yeni sentaks sadece kodu k\u0131saltmakla kalmaz, ayn\u0131 zamanda fonksiyonun ne t\u00fcr girdiler bekledi\u011fini ve varsay\u0131lan davran\u0131\u015flar\u0131n\u0131n neler oldu\u011funu kodun en tepesinde, deklarasyon a\u015famas\u0131nda a\u00e7\u0131k\u00e7a g\u00f6stererek dok\u00fcmantasyon g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<h3>3. Varsay\u0131lan Parametrelerin \u00c7al\u0131\u015fma Mekanizmas\u0131<\/h3>\n<p>Varsay\u0131lan parametrelerin arka planda nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak, JavaScript motorunun davran\u0131\u015flar\u0131n\u0131 \u00f6ng\u00f6rebilmek a\u00e7\u0131s\u0131ndan \u00f6nemlidir. Burada dikkat edilmesi gereken en kritik nokta, varsay\u0131lan de\u011ferlerin ne zaman ve hangi ko\u015fullarda devreye girdi\u011fidir.<\/p>\n<h4><code>undefined<\/code> ve <code>null<\/code> Aras\u0131ndaki Ayr\u0131m<\/h4>\n<p>JavaScript&#8217;te varsay\u0131lan parametreler, <strong>yaln\u0131zca ve yaln\u0131zca<\/strong> parametreye kar\u015f\u0131l\u0131k gelen arg\u00fcman iletilmedi\u011finde veya a\u00e7\u0131k\u00e7a <code>undefined<\/code> olarak ge\u00e7ildi\u011finde tetiklenir. E\u011fer fonksiyona <code>null<\/code> de\u011feri g\u00f6nderilirse, varsay\u0131lan parametre tetiklenmez. \u00c7\u00fcnk\u00fc <code>null<\/code>, programc\u0131 taraf\u0131ndan bilin\u00e7li olarak verilmi\u015f &#8220;bo\u015f\/de\u011fersiz&#8221; bir de\u011feri temsil eder.<\/p>\n<pre><code class=\"language-javascript\">function test(param = \"Varsay\u0131lan\") {\n    console.log(param);\n}\n\ntest();          \/\/ \u00c7\u0131kt\u0131: Varsay\u0131lan (Arg\u00fcman yok)\ntest(undefined); \/\/ \u00c7\u0131kt\u0131: Varsay\u0131lan (undefined g\u00f6nderildi)\ntest(null);      \/\/ \u00c7\u0131kt\u0131: null (null g\u00f6nderildi, varsay\u0131lan tetiklenmedi)\ntest(\"Merhaba\"); \/\/ \u00c7\u0131kt\u0131: Merhaba<\/code><\/pre>\n<p>Bu ayr\u0131m, API entegrasyonlar\u0131nda ve veri taban\u0131 i\u015flemlerinde verinin kas\u0131tl\u0131 olarak m\u0131 bo\u015f b\u0131rak\u0131ld\u0131\u011f\u0131n\u0131 yoksa hi\u00e7 mi g\u00f6nderilmedi\u011fini ay\u0131rt etmek i\u00e7in hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<h4>De\u011ferlendirme Zaman\u0131 (Evaluation Time)<\/h4>\n<p>Python gibi baz\u0131 dillerde varsay\u0131lan parametreler fonksiyonun tan\u0131mland\u0131\u011f\u0131 anda (parse\/compile time) bir kez de\u011ferlendirilir. Ancak JavaScript&#8217;te durum farkl\u0131d\u0131r. JavaScript&#8217;te varsay\u0131lan parametreler <strong>\u00e7a\u011fr\u0131 zaman\u0131nda (call time \/ runtime)<\/strong> de\u011ferlendirilir. Yani fonksiyon her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, varsay\u0131lan de\u011fer ifadesi yeniden \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">function benzersizIdEkle(liste = []) {\n    liste.push(Math.random());\n    return liste;\n}\n\nconsole.log(benzersizIdEkle()); \/\/ \u00c7\u0131kt\u0131: [0.452...]\nconsole.log(benzersizIdEkle()); \/\/ \u00c7\u0131kt\u0131: [0.891...] (Her seferinde yeni bir dizi olu\u015fturulur)<\/code><\/pre>\n<p>E\u011fer varsay\u0131lan parametreler tan\u0131mlama an\u0131nda de\u011ferlendirilseydi, sonraki t\u00fcm \u00e7a\u011fr\u0131larda ayn\u0131 dizi referans\u0131 kullan\u0131lacakt\u0131 ve bu durum ciddi bellek s\u0131z\u0131nt\u0131lar\u0131na veya beklenmeyen veri payla\u015f\u0131mlar\u0131na yol a\u00e7acakt\u0131. JavaScript&#8217;in dinamik de\u011ferlendirme yap\u0131s\u0131 bu t\u00fcr hatalar\u0131n \u00f6n\u00fcne ge\u00e7er.<\/p>\n<h3>4. Geli\u015fmi\u015f Kullan\u0131m Senaryolar\u0131<\/h3>\n<p>Varsay\u0131lan parametreler sadece statik de\u011ferlerle (say\u0131lar, dizeler) s\u0131n\u0131rl\u0131 de\u011fildir. JavaScript&#8217;in esnek yap\u0131s\u0131 sayesinde \u00e7ok daha dinamik yap\u0131lar kurmak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<h4>Fonksiyon \u00c7a\u011fr\u0131lar\u0131n\u0131 Varsay\u0131lan De\u011fer Yapmak<\/h4>\n<p>Bir parametrenin varsay\u0131lan de\u011feri, ba\u015fka bir fonksiyonun d\u00f6n\u00fc\u015f de\u011feri olabilir:<\/p>\n<pre><code class=\"language-javascript\">function varsayilanTarihAl() {\n    return new Date().toLocaleDateString();\n}\n\nfunction raporOlustur(baslik, tarih = varsayilanTarihAl()) {\n    console.log(<code>Rapor: ${baslik} - Tarih: ${tarih}<\/code>);\n}\n\nraporOlustur(\"Sat\u0131\u015f Analizi\"); \/\/ \u00c7\u0131kt\u0131: Rapor: Sat\u0131\u015f Analizi - Tarih: 20.05.2024 (o g\u00fcn\u00fcn tarihi)<\/code><\/pre>\n<p>Burada <code>varsayilanTarihAl<\/code> fonksiyonu, yaln\u0131zca <code>raporOlustur<\/code> fonksiyonuna ikinci parametre g\u00f6nderilmedi\u011finde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. E\u011fer ikinci parametre g\u00f6nderilirse, bu yard\u0131mc\u0131 fonksiyon hi\u00e7 \u00e7al\u0131\u015ft\u0131r\u0131lmaz, b\u00f6ylece gereksiz i\u015flemci y\u00fck\u00fcn\u00fcn \u00f6n\u00fcne ge\u00e7ilir.<\/p>\n<h4>\u00d6nceki Parametrelere Referans Verme<\/h4>\n<p>Bir parametre, kendisinden \u00f6nce tan\u0131mlanm\u0131\u015f olan ba\u015fka bir parametreye varsay\u0131lan de\u011fer olarak ba\u015fvurabilir:<\/p>\n<pre><code class=\"language-javascript\">function alanHesapla(genislik, yukseklik = genislik) {\n    return genislik * yukseklik;\n}\n\nconsole.log(alanHesapla(5));    \/\/ \u00c7\u0131kt\u0131: 25 (Kare gibi davrand\u0131, yukseklik = genislik oldu)\nconsole.log(alanHesapla(5, 10)); \/\/ \u00c7\u0131kt\u0131: 50 (Dikd\u00f6rtgen)<\/code><\/pre>\n<p>Ancak bu i\u015flemin s\u0131ras\u0131 \u00e7ok \u00f6nemlidir. Sol taraftaki parametreler sa\u011f taraftakiler i\u00e7in referans olabilirken, sa\u011f taraftakiler sol taraftakiler i\u00e7in referans olamaz. Bu durum &#8220;Temporal Dead Zone&#8221; (Ge\u00e7ici \u00d6l\u00fc B\u00f6lge) kural\u0131na dayan\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HATALI KULLANIM\nfunction hatal\u0131Fonksiyon(genislik = yukseklik, yukseklik) {\n    return genislik * yukseklik;\n}\n\nhatal\u0131Fonksiyon(undefined, 10); \/\/ ReferenceError: Cannot access 'yukseklik' before initialization<\/code><\/pre>\n<h3>5. Yap\u0131 S\u00f6kme (Destructuring) ile Birlikte Kullan\u0131m<\/h3>\n<p>Varsay\u0131lan parametrelerin en g\u00fc\u00e7l\u00fc oldu\u011fu alanlardan biri, ES6&#8217;n\u0131n bir di\u011fer \u00f6nemli \u00f6zelli\u011fi olan &#8220;Destructuring&#8221; (Yap\u0131 S\u00f6kme) ile birle\u015ftirildi\u011fi senaryolard\u0131r. \u00d6zellikle \u00e7ok say\u0131da konfig\u00fcrasyon se\u00e7ene\u011fi alan fonksiyonlarda bu ikili harikalar yarat\u0131r.<\/p>\n<h4>Nesne Yap\u0131 S\u00f6kme (Object Destructuring)<\/h4>\n<p>Bir fonksiyona parametre olarak bir nesne ge\u00e7ildi\u011finde, bu nesnenin i\u00e7indeki \u00f6zelliklere varsay\u0131lan de\u011ferler atayabiliriz:<\/p>\n<pre><code class=\"language-javascript\">function grafikCiz({ genislik = 800, yukseklik = 600, renk = \"siyah\" } = {}) {\n    console.log(<code>Grafik Boyutu: ${genislik}x${yukseklik}, Renk: ${renk}<\/code>);\n}\n\ngrafikCiz({ renk: \"k\u0131rm\u0131z\u0131\" }); \/\/ \u00c7\u0131kt\u0131: Grafik Boyutu: 800x600, Renk: k\u0131rm\u0131z\u0131\ngrafikCiz();                   \/\/ \u00c7\u0131kt\u0131: Grafik Boyutu: 800x600, Renk: siyah<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte iki a\u015famal\u0131 bir varsay\u0131lan de\u011fer korumas\u0131 vard\u0131r:<\/p>\n<ol>\n<li><code>{ genislik = 800, ... }<\/code> k\u0131sm\u0131, g\u00f6nderilen nesnenin i\u00e7indeki eksik \u00f6zellikleri tamamlar.<\/li>\n<li>E\u015fitli\u011fin sa\u011f\u0131ndaki <code>= {}<\/code> k\u0131sm\u0131 ise, fonksiyona hi\u00e7 arg\u00fcman g\u00f6nderilmemesi durumunda (<code>grafikCiz()<\/code> \u00e7a\u011fr\u0131s\u0131 gibi) fonksiyonun hata vermesini (<code>Cannot read properties of undefined<\/code>) engeller ve bo\u015f bir nesneyi varsay\u0131lan olarak kabul eder.<\/li>\n<\/ol>\n<h3>6. Kapsam (Scope) ve Temporal Dead Zone \u0130li\u015fkisi<\/h3>\n<p>Varsay\u0131lan parametreler de\u011ferlendirilirken kendilerine ait ge\u00e7ici bir kapsam (scope) olu\u015fturulur. Bu kapsam, fonksiyonun d\u0131\u015f kapsam\u0131 (outer scope) ile fonksiyonun g\u00f6vdesi (body scope) aras\u0131nda yer al\u0131r.<\/p>\n<pre><code class=\"language-javascript\">let x = 1;\n\nfunction testScope(a = x, b = () => x) {\n    let x = 2;\n    console.log(a); \/\/ \u00c7\u0131kt\u0131: 1 (D\u0131\u015f kapsamdaki x'i referans al\u0131r)\n    console.log(b()); \/\/ \u00c7\u0131kt\u0131: 1 (Yine d\u0131\u015f kapsamdaki x'i referans al\u0131r)\n}\n\ntestScope();<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, fonksiyon g\u00f6vdesinde tan\u0131mlanan <code>let x = 2<\/code> ifadesi, parametrelerin de\u011ferlendirildi\u011fi kapsam\u0131 etkilemez. Parametreler de\u011ferlendirilirken hen\u00fcz fonksiyon g\u00f6vdesine girilmedi\u011fi i\u00e7in, parametre kapsam\u0131ndaki <code>x<\/code>, d\u0131\u015far\u0131daki <code>let x = 1<\/code> de\u011fi\u015fkenine ba\u011flan\u0131r.<\/p>\n<h3>7. Arguments Nesnesi \u00dczerindeki Etkisi<\/h3>\n<p>JavaScript&#8217;te klasik <code>arguments<\/code> nesnesi, fonksiyona ge\u00e7ilen arg\u00fcmanlar\u0131 yerel bir dizi benzeri nesne olarak tutar. Varsay\u0131lan parametrelerin kullan\u0131m\u0131, <code>arguments<\/code> nesnesinin davran\u0131\u015f\u0131n\u0131 do\u011frudan etkiler.<\/p>\n<p>ES5&#8217;te (kat\u0131 mod d\u0131\u015f\u0131ndayken), parametreler \u00fczerinde yap\u0131lan de\u011fi\u015fiklikler <code>arguments<\/code> nesnesine yans\u0131yordu:<\/p>\n<pre><code class=\"language-javascript\">function es5Fonksiyonu(a) {\n    a = 10;\n    console.log(arguments[0]); \/\/ \u00c7\u0131kt\u0131: 10 (Parametre ile arguments senkronize)\n}\nes5Fonksiyonu(5);<\/code><\/pre>\n<p>Ancak, ES6 varsay\u0131lan parametreleri kullan\u0131ld\u0131\u011f\u0131nda, fonksiyon otomatik olarak &#8220;strict mode&#8221; (kat\u0131 mod) benzeri bir davran\u0131\u015f sergiler ve <code>arguments<\/code> nesnesi ile parametreler aras\u0131ndaki bu senkronizasyon kopar. <code>arguments<\/code> nesnesi her zaman fonksiyonun \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 andaki orijinal arg\u00fcmanlar\u0131 yans\u0131t\u0131r:<\/p>\n<pre><code class=\"language-javascript\">function es6Fonksiyonu(a = 1) {\n    a = 10;\n    console.log(arguments[0]); \/\/ \u00c7\u0131kt\u0131: 5 (Orijinal arg\u00fcman korundu)\n}\nes6Fonksiyonu(5);<\/code><\/pre>\n<h3>8. En \u0130yi Pratikler (Best Practices) ve Ka\u00e7\u0131n\u0131lmas\u0131 Gerekenler<\/h3>\n<p>Varsay\u0131lan parametreleri kullan\u0131rken kod kalitesini art\u0131rmak ve olas\u0131 hatalar\u0131 \u00f6nlemek i\u00e7in \u015fu kurallara dikkat edilmelidir:<\/p>\n<h4>Varsay\u0131lan Parametreleri Listenin Sonuna Koyun<\/h4>\n<p>JavaScript&#8217;te parametreler s\u0131rayla e\u015fle\u015ftirilir. Bu nedenle, varsay\u0131lan de\u011fere sahip parametreleri her zaman parametre listesinin sonuna koymak en iyi uygulamad\u0131r. E\u011fer ba\u015fa koyarsan\u0131z, varsay\u0131lan de\u011feri kullanabilmek i\u00e7in fonksiyona a\u00e7\u0131k\u00e7a <code>undefined<\/code> ge\u00e7meniz gerekir ki bu da k\u00f6t\u00fc bir kod tasar\u0131m\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\/\/ K\u00d6T\u00dc PRAT\u0130K\nfunction baglantiKur(port = 8080, host) { ... }\nbaglantiKur(undefined, \"localhost\");\n\n\/\/ \u0130Y\u0130 PRAT\u0130K\nfunction baglantiKur(host, port = 8080) { ... }\nbaglantiKur(\"localhost\");<\/code><\/pre>\n<h4>Karma\u015f\u0131k Mant\u0131ksal \u0130\u015flemlerden Ka\u00e7\u0131n\u0131n<\/h4>\n<p>Varsay\u0131lan parametre atamalar\u0131nda karma\u015f\u0131k hesaplamalar veya yan etkileri (side-effects) olan fonksiyon \u00e7a\u011fr\u0131lar\u0131 yapmak kodun okunabilirli\u011fini zorla\u015ft\u0131r\u0131r ve hata ay\u0131klamay\u0131 (debugging) g\u00fc\u00e7le\u015ftirir. Varsay\u0131lan de\u011ferler olabildi\u011fince basit ve tahmin edilebilir olmal\u0131d\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JavaScript&#8217;te varsay\u0131lan parametreler (Default Parameters), ES6 devriminin en temiz ve en i\u015flevsel kazan\u0131mlar\u0131ndan biridir. Geli\u015ftiricileri falsy de\u011ferlerin yaratt\u0131\u011f\u0131 tuzaklardan korurken, daha az kodla daha \u00e7ok i\u015f yapma imkan\u0131 sunar. Parametrelerin \u00e7a\u011fr\u0131 zaman\u0131nda de\u011ferlendirilmesi, yap\u0131 s\u00f6kme (destructuring) ile olan m\u00fckemmel uyumu ve kapsam (scope) kurallar\u0131 sayesinde modern JavaScript mimarisinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir.<\/p>\n<p>Temiz, bak\u0131m\u0131 kolay ve hatas\u0131z kodlar yazmak i\u00e7in varsay\u0131lan parametrelerin sundu\u011fu bu modern yetenekleri projelerinizde aktif olarak kullanman\u0131z, kod kalitenizi bir \u00fcst seviyeye ta\u015f\u0131yacakt\u0131r.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/javascript-default-function-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/javascript-default-function-parameters<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Modern JavaScript geli\u015fim s\u00fcrecinde, dilin esnekli\u011fini ve okunabilirli\u011fini art\u0131rmak amac\u0131yla bir\u00e7ok yeni \u00f6zellik eklenmi\u015ftir.","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-43109","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 Varsay\u0131lan Parametreleri Anlamak (Default Parameters) - 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-varsayilan-parametreleri-anlamak-default-parameters\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript&#039;te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)\" \/>\n<meta property=\"og:description\" content=\"Modern JavaScript geli\u015fim s\u00fcrecinde, dilin esnekli\u011fini ve okunabilirli\u011fini art\u0131rmak amac\u0131yla bir\u00e7ok yeni \u00f6zellik eklenmi\u015ftir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-06T05:00:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-06T05:01:13+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\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)\",\"datePublished\":\"2026-07-06T05:00:49+00:00\",\"dateModified\":\"2026-07-06T05:01:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/\"},\"wordCount\":1502,\"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-varsayilan-parametreleri-anlamak-default-parameters\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/\",\"name\":\"JavaScript'te Varsay\u0131lan Parametreleri Anlamak (Default Parameters) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-07-06T05:00:49+00:00\",\"dateModified\":\"2026-07-06T05:01:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)\"}]},{\"@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 Varsay\u0131lan Parametreleri Anlamak (Default Parameters) - 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-varsayilan-parametreleri-anlamak-default-parameters\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)","og_description":"Modern JavaScript geli\u015fim s\u00fcrecinde, dilin esnekli\u011fini ve okunabilirli\u011fini art\u0131rmak amac\u0131yla bir\u00e7ok yeni \u00f6zellik eklenmi\u015ftir.","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-07-06T05:00:49+00:00","article_modified_time":"2026-07-06T05:01:13+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\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)","datePublished":"2026-07-06T05:00:49+00:00","dateModified":"2026-07-06T05:01:13+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/"},"wordCount":1502,"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-varsayilan-parametreleri-anlamak-default-parameters\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/","name":"JavaScript'te Varsay\u0131lan Parametreleri Anlamak (Default Parameters) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-07-06T05:00:49+00:00","dateModified":"2026-07-06T05:01:13+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreleri-anlamak-default-parameters\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;te Varsay\u0131lan Parametreleri Anlamak (Default Parameters)"}]},{"@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\/43109","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=43109"}],"version-history":[{"count":2,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43109\/revisions"}],"predecessor-version":[{"id":43111,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43109\/revisions\/43111"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}