{"id":37328,"date":"2025-12-31T01:40:43","date_gmt":"2025-12-30T22:40:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37328"},"modified":"2025-12-31T01:40:43","modified_gmt":"2025-12-30T22:40:43","slug":"javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/","title":{"rendered":"JavaScript&#8217;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik"},"content":{"rendered":"<p><body><\/p>\n<h2>JavaScript&#8217;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik<\/h2>\n<p>JavaScript, web&#8217;in kalbinde yer alan dinamik ve esnek bir programlama dilidir. Y\u0131llar i\u00e7inde s\u00fcrekli evrim ge\u00e7iren bu dil, her yeni s\u00fcr\u00fcmle birlikte geli\u015ftiricilere daha g\u00fc\u00e7l\u00fc, daha okunabilir ve daha verimli kod yazma imkanlar\u0131 sunmu\u015ftur. ES6 (ECMAScript 2015) olarak da bilinen s\u00fcr\u00fcm, JavaScript tarihinde bir d\u00f6n\u00fcm noktas\u0131 olmu\u015f, dilin temel yap\u0131s\u0131na bir\u00e7ok yenilik getirmi\u015ftir. Bu yeniliklerden biri de &#8220;varsay\u0131lan parametreler&#8221; (default parameters) \u00f6zelli\u011fidir.<\/p>\n<p>Varsay\u0131lan parametreler, fonksiyon tan\u0131mlarken parametrelere varsay\u0131lan de\u011ferler atamam\u0131za olanak tan\u0131r. Bu \u00f6zellik sayesinde, bir fonksiyon \u00e7a\u011fr\u0131l\u0131rken belirli bir parametreye de\u011fer sa\u011flanmad\u0131\u011f\u0131nda (veya <code>undefined<\/code> olarak sa\u011fland\u0131\u011f\u0131nda), \u00f6nceden belirlenmi\u015f varsay\u0131lan de\u011fer otomatik olarak kullan\u0131l\u0131r. ES6 \u00f6ncesinde bu i\u015flevsellik, genellikle karma\u015f\u0131k mant\u0131ksal operat\u00f6rler veya ko\u015fullu ifadelerle manuel olarak y\u00f6netilmek zorundayd\u0131. Varsay\u0131lan parametreler, bu s\u00fcreci basitle\u015ftirerek kodun okunabilirli\u011fini, bak\u0131m\u0131n\u0131 ve hata ay\u0131klamas\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirmi\u015ftir. Bu makalede, JavaScript&#8217;teki varsay\u0131lan parametrelerin ne oldu\u011funu, neden ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131, nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131, geli\u015fmi\u015f senaryolar\u0131n\u0131 ve geli\u015ftiricilere sa\u011flad\u0131\u011f\u0131 avantajlar\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Varsay\u0131lan Parametrelere Neden \u0130htiya\u00e7 Duyuldu?<\/h3>\n<p>ES6 \u00f6ncesinde, bir fonksiyona ge\u00e7irilmeyen veya <code>undefined<\/code> olarak ge\u00e7irilen parametreler i\u00e7in varsay\u0131lan de\u011ferler atamak olduk\u00e7a yayg\u0131n bir gereklilikti. Ancak bu i\u015flem, modern JavaScript&#8217;in sundu\u011fu kolayl\u0131klardan yoksundu ve genellikle daha fazla kod sat\u0131r\u0131 ve karma\u015f\u0131kl\u0131k anlam\u0131na geliyordu. Gelin, ES6 \u00f6ncesi yakla\u015f\u0131mlara ve bunlar\u0131n dezavantajlar\u0131na bir g\u00f6z atal\u0131m.<\/p>\n<h4>ES6 \u00d6ncesi Yakla\u015f\u0131mlar<\/h4>\n<p>ES6&#8217;dan \u00f6nce, varsay\u0131lan de\u011ferleri ayarlamak i\u00e7in genellikle iki ana y\u00f6ntem kullan\u0131l\u0131rd\u0131:<\/p>\n<p>1.  <strong>Mant\u0131ksal OR (<code>||<\/code>) Operat\u00f6r\u00fc Kullan\u0131m\u0131:<\/strong><br \/>\n    Bu, en yayg\u0131n ve k\u0131sa y\u00f6ntemdi. Fonksiyonun i\u00e7inde, parametrenin de\u011feri kontrol edilir ve e\u011fer &#8220;falsy&#8221; (yanl\u0131\u015fl\u0131k de\u011feri ta\u015f\u0131yan) ise, varsay\u0131lan de\u011fer atan\u0131r.<\/p>\n<pre><code class=\"language-javascript\">function greet(name, greeting) {\n      name = name || 'Misafir';\n      greeting = greeting || 'Merhaba';\n      console.log(<code>${greeting}, ${name}!<\/code>);\n    }\n\n    greet('Alice');           \/\/ Merhaba, Alice!\n    greet();                  \/\/ Merhaba, Misafir!\n    greet('Bob', 'Selam');    \/\/ Selam, Bob!<\/code><\/pre>\n<p>    <strong>Dezavantajlar\u0131:<\/strong><br \/>\n    *   <strong>Falsy De\u011fer Sorunu:<\/strong> Bu y\u00f6ntem, parametreye <code>0<\/code>, <code>''<\/code> (bo\u015f string), <code>null<\/code>, <code>false<\/code> gibi ge\u00e7erli &#8220;falsy&#8221; bir de\u011fer ge\u00e7ildi\u011finde bile varsay\u0131lan de\u011feri tetikler. \u00d6rne\u011fin, <code>greet('', 'Selam')<\/code> \u00e7a\u011fr\u0131s\u0131 <code>Selam, Misafir!<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 verir, \u00e7\u00fcnk\u00fc bo\u015f string falsy&#8217;dir. Bu, istenmeyen bir davran\u0131\u015f olabilir.<br \/>\n    *   <strong>Okunabilirlik:<\/strong> \u00c7ok say\u0131da parametre oldu\u011funda veya i\u00e7 i\u00e7e kullan\u0131ld\u0131\u011f\u0131nda kodun okunabilirli\u011fini azalt\u0131r.<\/p>\n<p>2.  <strong><code>typeof<\/code> Kontrol\u00fc ile Ko\u015fullu \u0130fadeler:<\/strong><br \/>\n    Bu y\u00f6ntem, parametrenin ger\u00e7ekten <code>undefined<\/code> olup olmad\u0131\u011f\u0131n\u0131 kontrol ederek <code>||<\/code> operat\u00f6r\u00fcn\u00fcn falsy de\u011fer sorununu a\u015far.<\/p>\n<pre><code class=\"language-javascript\">function calculateArea(width, height) {\n      if (typeof width === 'undefined') {\n        width = 10;\n      }\n      if (typeof height === 'undefined') {\n        height = 20;\n      }\n      return width * height;\n    }\n\n    console.log(calculateArea());         \/\/ 200\n    console.log(calculateArea(5));        \/\/ 100\n    console.log(calculateArea(5, 15));    \/\/ 75\n    console.log(calculateArea(0, 10));    \/\/ 0 (do\u011fru \u00e7al\u0131\u015f\u0131r, \u00e7\u00fcnk\u00fc 0 falsy olsa da undefined de\u011fildir)<\/code><\/pre>\n<p>    <strong>Dezavantajlar\u0131:<\/strong><br \/>\n    *   <strong>Uzunluk ve Tekrarlama:<\/strong> Her parametre i\u00e7in ayr\u0131 bir <code>if<\/code> blo\u011fu gerektirmesi kodu uzat\u0131r ve tekrarlara yol a\u00e7ar. Bu durum, \u00f6zellikle \u00e7ok parametreli fonksiyonlarda kod kalabal\u0131\u011f\u0131na neden olur.<br \/>\n    *   <strong>Fonksiyon \u0130mzas\u0131 D\u0131\u015f\u0131nda Olmas\u0131:<\/strong> Varsay\u0131lan de\u011ferler fonksiyon imzas\u0131n\u0131n d\u0131\u015f\u0131nda, fonksiyon g\u00f6vdesinde tan\u0131mland\u0131\u011f\u0131 i\u00e7in, fonksiyonun ne bekledi\u011fini anlamak i\u00e7in fonksiyonun i\u00e7ine bakmak gerekir.<\/p>\n<p>Bu y\u00f6ntemler, her ne kadar i\u015flevsel olsalar da, JavaScript&#8217;in geli\u015fim s\u00fcrecinde daha temiz ve deklaratif bir \u00e7\u00f6z\u00fcm ihtiyac\u0131n\u0131 ortaya \u00e7\u0131karm\u0131\u015ft\u0131r. ES6 ile gelen varsay\u0131lan parametreler, bu ihtiyac\u0131 zarif bir \u015fekilde kar\u015f\u0131layarak yukar\u0131daki dezavantajlar\u0131 ortadan kald\u0131rm\u0131\u015ft\u0131r.<\/p>\n<h3>ES6 ile Varsay\u0131lan Parametrelerin S\u00f6z Dizimi<\/h3>\n<p>ES6 ile varsay\u0131lan parametrelerin s\u00f6z dizimi olduk\u00e7a basittir ve fonksiyon tan\u0131mlamalar\u0131n\u0131za do\u011frudan entegre edilir. Bir parametreye varsay\u0131lan de\u011fer atamak i\u00e7in, parametre ad\u0131n\u0131n hemen arkas\u0131na bir e\u015fittir (<code>=<\/code>) i\u015fareti ve ard\u0131ndan varsay\u0131lan de\u011feri yazman\u0131z yeterlidir.<\/p>\n<pre><code class=\"language-javascript\">function functionName(param1 = defaultValue1, param2 = defaultValue2, ...) {\n  \/\/ Fonksiyon g\u00f6vdesi\n}<\/code><\/pre>\n<p>\u00d6rneklerle inceleyelim:<\/p>\n<h4>Basit Varsay\u0131lan De\u011ferler<\/h4>\n<pre><code class=\"language-javascript\">function sayHello(name = 'D\u00fcnya', language = 'T\u00fcrk\u00e7e') {\n  if (language === 'T\u00fcrk\u00e7e') {\n    console.log(<code>Merhaba, ${name}!<\/code>);\n  } else if (language === 'English') {\n    console.log(<code>Hello, ${name}!<\/code>);\n  } else {\n    console.log(<code>Unknown language for ${name}.<\/code>);\n  }\n}\n\nsayHello();                     \/\/ Merhaba, D\u00fcnya!\nsayHello('Ali');                \/\/ Merhaba, Ali!\nsayHello('Ay\u015fe', 'English');    \/\/ Hello, Ay\u015fe!\nsayHello(undefined, 'English'); \/\/ Hello, D\u00fcnya! (name parametresi undefined oldu\u011fu i\u00e7in varsay\u0131lan de\u011feri al\u0131r)<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, <code>name<\/code> parametresi i\u00e7in varsay\u0131lan de\u011fer <code>'D\u00fcnya'<\/code>, <code>language<\/code> parametresi i\u00e7in ise <code>'T\u00fcrk\u00e7e'<\/code> olarak belirlenmi\u015ftir. Fonksiyon \u00e7a\u011fr\u0131s\u0131nda bu parametreler atland\u0131\u011f\u0131nda veya <code>undefined<\/code> olarak belirtildi\u011finde, ilgili varsay\u0131lan de\u011ferler devreye girer.<\/p>\n<h4>Farkl\u0131 Veri Tipleri ile Kullan\u0131m<\/h4>\n<p>Varsay\u0131lan parametreler sadece stringlerle s\u0131n\u0131rl\u0131 de\u011fildir; say\u0131, boolean, obje, dizi veya hatta ba\u015fka bir fonksiyon gibi herhangi bir veri tipiyle kullan\u0131labilir.<\/p>\n<pre><code class=\"language-javascript\">function calculateDiscount(price, discountPercentage = 0.10) {\n  return price * (1 - discountPercentage);\n}\n\nconsole.log(calculateDiscount(100));        \/\/ 90 (10% indirim uygulan\u0131r)\nconsole.log(calculateDiscount(200, 0.25));   \/\/ 150 (25% indirim uygulan\u0131r)\nconsole.log(calculateDiscount(500, 0));     \/\/ 500 (0% indirim uygulan\u0131r, falsy de\u011feri do\u011fru i\u015fler)\n\nfunction createUser(user = { name: 'Misafir', age: 0 }) {\n  console.log(<code>Kullan\u0131c\u0131 Ad\u0131: ${user.name}, Ya\u015f: ${user.age}<\/code>);\n}\n\ncreateUser();                               \/\/ Kullan\u0131c\u0131 Ad\u0131: Misafir, Ya\u015f: 0\ncreateUser({ name: 'Veli', age: 30 });      \/\/ Kullan\u0131c\u0131 Ad\u0131: Veli, Ya\u015f: 30<\/code><\/pre>\n<p>Bu \u00f6rnekler, varsay\u0131lan parametrelerin farkl\u0131 veri tipleriyle ne kadar esnek bir \u015fekilde kullan\u0131labildi\u011fini g\u00f6stermektedir. \u00d6zellikle <code>calculateDiscount<\/code> \u00f6rne\u011finde, <code>0<\/code> gibi falsy bir de\u011ferin <code>discountPercentage<\/code> parametresine do\u011frudan ge\u00e7irilmesinin, <code>||<\/code> operat\u00f6r\u00fcn\u00fcn aksine, varsay\u0131lan de\u011feri tetiklemedi\u011fini g\u00f6r\u00fcyoruz. Bu, varsay\u0131lan parametrelerin <code>undefined<\/code> kontrol\u00fc yapt\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<h3>Varsay\u0131lan Parametrelerin \u00c7al\u0131\u015fma Mekanizmas\u0131<\/h3>\n<p>Varsay\u0131lan parametreler, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, yaln\u0131zca ilgili parametreye a\u00e7\u0131k\u00e7a bir de\u011fer ge\u00e7irilmedi\u011finde veya ge\u00e7irilen de\u011fer <code>undefined<\/code> oldu\u011funda devreye girer. Bu, temel bir ayr\u0131m\u0131 anlamak i\u00e7in kritik \u00f6neme sahiptir: <code>null<\/code> de\u011feri ile <code>undefined<\/code> de\u011feri aras\u0131ndaki fark.<\/p>\n<h4><code>undefined<\/code> vs. <code>null<\/code><\/h4>\n<p>*   <strong><code>undefined<\/code>:<\/strong> Bir de\u011fi\u015fkene de\u011fer atanmad\u0131\u011f\u0131nda veya bir fonksiyon parametresine hi\u00e7bir arg\u00fcman ge\u00e7irilmedi\u011finde varsay\u0131lan olarak ald\u0131\u011f\u0131 de\u011ferdir. Varsay\u0131lan parametreler, tam olarak bu durumu hedef al\u0131r.<br \/>\n*   <strong><code>null<\/code>:<\/strong> Bir de\u011ferin bilerek &#8220;hi\u00e7bir \u015fey&#8221; olarak ayarland\u0131\u011f\u0131n\u0131 g\u00f6steren atanm\u0131\u015f bir de\u011ferdir. <code>null<\/code> bir &#8220;falsy&#8221; de\u011fer olmas\u0131na ra\u011fmen, <code>undefined<\/code> de\u011fildir.<\/p>\n<p>Varsay\u0131lan parametreler, yaln\u0131zca parametreye ge\u00e7irilen arg\u00fcman <code>undefined<\/code> ise veya arg\u00fcman hi\u00e7 ge\u00e7irilmezse varsay\u0131lan de\u011feri kullan\u0131r. E\u011fer parametreye a\u00e7\u0131k\u00e7a <code>null<\/code> de\u011feri ge\u00e7irilirse, bu <code>null<\/code> de\u011feri varsay\u0131lan de\u011feri ge\u00e7ersiz k\u0131lar ve parametre <code>null<\/code> olarak atan\u0131r.<\/p>\n<pre><code class=\"language-javascript\">function displayValue(value = 'Varsay\u0131lan De\u011fer') {\n  console.log(value);\n}\n\ndisplayValue();           \/\/ Varsay\u0131lan De\u011fer (arg\u00fcman yok)\ndisplayValue(undefined);  \/\/ Varsay\u0131lan De\u011fer (arg\u00fcman undefined)\ndisplayValue(null);       \/\/ null (arg\u00fcman null, varsay\u0131lan de\u011feri ge\u00e7ersiz k\u0131lar)\ndisplayValue('Merhaba');  \/\/ Merhaba (arg\u00fcman mevcut)\ndisplayValue(0);          \/\/ 0 (arg\u00fcman 0, falsy olsa da undefined de\u011fildir)\ndisplayValue('');         \/\/ '' (arg\u00fcman bo\u015f string, falsy olsa da undefined de\u011fildir)<\/code><\/pre>\n<p>Bu davran\u0131\u015f, ES6 varsay\u0131lan parametrelerinin <code>||<\/code> operat\u00f6r\u00fcne k\u0131yasla daha g\u00fcvenilir ve tahmin edilebilir olmas\u0131n\u0131 sa\u011flar. Geli\u015ftiriciler, <code>null<\/code> de\u011ferini bilin\u00e7li olarak bir &#8220;de\u011fer yok&#8221; durumu olarak ge\u00e7irebilir ve bu, varsay\u0131lan de\u011ferin devreye girmesini engeller.<\/p>\n<h4>Tembel De\u011ferlendirme (Lazy Evaluation)<\/h4>\n<p>Varsay\u0131lan parametrelerin bir di\u011fer \u00f6nemli \u00f6zelli\u011fi de tembel de\u011ferlendirme prensibiyle \u00e7al\u0131\u015fmas\u0131d\u0131r. Yani, varsay\u0131lan de\u011fer olarak bir ifade veya bir fonksiyon \u00e7a\u011fr\u0131s\u0131 kulland\u0131\u011f\u0131n\u0131zda, bu ifade veya fonksiyon sadece ilgili parametreye de\u011fer atanmas\u0131 gerekti\u011finde (yani parametre <code>undefined<\/code> oldu\u011funda) de\u011ferlendirilir.<\/p>\n<pre><code class=\"language-javascript\">let counter = 0;\n\nfunction generateUniqueId() {\n  counter++;\n  return <code>ID-${counter}<\/code>;\n}\n\nfunction createItem(name, id = generateUniqueId()) {\n  console.log(<code>\u00d6\u011fe Olu\u015fturuldu: ${name} (ID: ${id})<\/code>);\n}\n\ncreateItem('Kitap');        \/\/ \u00d6\u011fe Olu\u015fturuldu: Kitap (ID: ID-1)\ncreateItem('Defter');       \/\/ \u00d6\u011fe Olu\u015fturuldu: Defter (ID: ID-2)\ncreateItem('Kalem', 'ABC'); \/\/ \u00d6\u011fe Olu\u015fturuldu: Kalem (ID: ABC) (generateUniqueId \u00e7a\u011fr\u0131lmaz)\ncreateItem('Silgi');        \/\/ \u00d6\u011fe Olu\u015fturuldu: Silgi (ID: ID-3)<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>generateUniqueId()<\/code> fonksiyonu sadece <code>id<\/code> parametresi atland\u0131\u011f\u0131nda veya <code>undefined<\/code> olarak verildi\u011finde \u00e7a\u011fr\u0131l\u0131r. E\u011fer <code>id<\/code> parametresine a\u00e7\u0131k\u00e7a bir de\u011fer verilirse, <code>generateUniqueId()<\/code> fonksiyonu hi\u00e7 \u00e7al\u0131\u015ft\u0131r\u0131lmaz. Bu, \u00f6zellikle kaynak yo\u011fun i\u015flemler veya yan etkileri olan fonksiyonlar varsay\u0131lan de\u011fer olarak kullan\u0131ld\u0131\u011f\u0131nda performans a\u00e7\u0131s\u0131ndan \u00f6nemlidir.<\/p>\n<h3>Geli\u015fmi\u015f Kullan\u0131m Senaryolar\u0131<\/h3>\n<p>Varsay\u0131lan parametreler, basit de\u011fer atamalar\u0131n\u0131n \u00f6tesinde, daha karma\u015f\u0131k ve g\u00fc\u00e7l\u00fc kullan\u0131m senaryolar\u0131na da olanak tan\u0131r.<\/p>\n<h4>Di\u011fer Parametrelere Referans Verme<\/h4>\n<p>Bir varsay\u0131lan parametrenin de\u011feri, kendisinden \u00f6nceki (soldaki) parametrelerin de\u011ferlerine ba\u011fl\u0131 olabilir. Bu, dinamik varsay\u0131lan de\u011ferler olu\u015fturmak i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">function greetPerson(firstName, lastName = 'Anonim', fullName = <code>${firstName} ${lastName}<\/code>) {\n  console.log(<code>Merhaba, ${fullName}!<\/code>);\n}\n\ngreetPerson('Ahmet');                     \/\/ Merhaba, Ahmet Anonim!\ngreetPerson('Ay\u015fe', 'Y\u0131lmaz');            \/\/ Merhaba, Ay\u015fe Y\u0131lmaz!\ngreetPerson('Mehmet', 'Can', 'M. Can');   \/\/ Merhaba, M. Can!\ngreetPerson(undefined, 'Soyad');          \/\/ Merhaba, undefined Soyad! (firstName undefined oldu\u011fu i\u00e7in)<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>fullName<\/code> parametresinin varsay\u0131lan de\u011feri, <code>firstName<\/code> ve <code>lastName<\/code> parametrelerinin de\u011ferlerini kullan\u0131r. Ancak, <code>fullName<\/code> parametresi <code>lastName<\/code>&#8216;den sonra tan\u0131mland\u0131\u011f\u0131 i\u00e7in <code>lastName<\/code>&#8216;in de\u011ferine eri\u015febilir. \u00d6nceki parametrelere eri\u015fim, parametrelerin tan\u0131mlanma s\u0131ras\u0131na g\u00f6re soldan sa\u011fa do\u011frudur. Yani, <code>firstName<\/code> parametresinin varsay\u0131lan de\u011feri <code>lastName<\/code>&#8216;e eri\u015femezdi.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Hatal\u0131 kullan\u0131m: Sa\u011fdan sola ba\u011f\u0131ml\u0131l\u0131k m\u00fcmk\u00fcn de\u011fil\n\/\/ function invalidExample(param1 = param2, param2 = 'default') { ... } \/\/ ReferenceError: param2 is not defined<\/code><\/pre>\n<h4>Fonksiyon \u00c7a\u011fr\u0131lar\u0131 ve \u0130fadeler<\/h4>\n<p>Varsay\u0131lan de\u011fer olarak sadece sabitler de\u011fil, herhangi bir JavaScript ifadesi veya fonksiyon \u00e7a\u011fr\u0131s\u0131 kullan\u0131labilir. Bu, varsay\u0131lan de\u011ferlerin daha dinamik ve esnek olmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-javascript\">function getRandomNumber() {\n  return Math.floor(Math.random() * 100);\n}\n\nfunction processData(data, config = { id: getRandomNumber(), timestamp: Date.now() }) {\n  console.log(<code>Veri: ${data}, Yap\u0131land\u0131rma ID: ${config.id}, Zaman Damgas\u0131: ${config.timestamp}<\/code>);\n}\n\nprocessData('\u00d6\u011fe A'); \/\/ Her \u00e7a\u011fr\u0131da farkl\u0131 bir ID ve zaman damgas\u0131 \u00fcretir\nprocessData('\u00d6\u011fe B');\nprocessData('\u00d6\u011fe C', { id: 123, timestamp: 1678886400000 }); \/\/ Kendi yap\u0131land\u0131rmam\u0131z\u0131 sa\u011flar\u0131z<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>config<\/code> objesinin varsay\u0131lan de\u011feri, <code>getRandomNumber()<\/code> fonksiyonunu ve <code>Date.now()<\/code> fonksiyonunu kullanarak dinamik olarak olu\u015fturulur. Yine tembel de\u011ferlendirme prensibi sayesinde, bu fonksiyonlar sadece <code>config<\/code> parametresi atland\u0131\u011f\u0131nda \u00e7al\u0131\u015f\u0131r.<\/p>\n<h4>Destructuring (Y\u0131k\u0131c\u0131 Atama) ile Birlikte Kullan\u0131m<\/h4>\n<p>Varsay\u0131lan parametreler, ES6&#8217;n\u0131n bir di\u011fer g\u00fc\u00e7l\u00fc \u00f6zelli\u011fi olan y\u0131k\u0131c\u0131 atama (destructuring) ile birle\u015ftirildi\u011finde son derece g\u00fc\u00e7l\u00fc ve okunabilir kodlar yazmaya olanak tan\u0131r. \u00d6zellikle fonksiyonlara obje olarak yap\u0131land\u0131rma se\u00e7enekleri ge\u00e7irme durumunda bu kombinasyon \u00e7ok etkilidir.<\/p>\n<pre><code class=\"language-javascript\">function displayUser({ name = 'Misafir', age = 0, city = 'Bilinmiyor' } = {}) {\n  console.log(<code>Ad: ${name}, Ya\u015f: ${age}, \u015eehir: ${city}<\/code>);\n}\n\ndisplayUser({ name: 'Emre', age: 25 });           \/\/ Ad: Emre, Ya\u015f: 25, \u015eehir: Bilinmiyor\ndisplayUser({ city: 'Ankara' });                  \/\/ Ad: Misafir, Ya\u015f: 0, \u015eehir: Ankara\ndisplayUser();                                    \/\/ Ad: Misafir, Ya\u015f: 0, \u015eehir: Bilinmiyor (bo\u015f obje olarak \u00e7a\u011fr\u0131l\u0131r ve i\u00e7indeki varsay\u0131lanlar tetiklenir)\ndisplayUser(undefined);                           \/\/ Ad: Misafir, Ya\u015f: 0, \u015eehir: Bilinmiyor (undefined olarak \u00e7a\u011fr\u0131l\u0131r ve i\u00e7indeki varsay\u0131lanlar tetiklenir)\ndisplayUser(null);                                \/\/ TypeError: Cannot destructure property 'name' of 'null' as it is null. (null bir obje olmad\u0131\u011f\u0131 i\u00e7in hata verir)<\/code><\/pre>\n<p>Bu \u00f6rnekte:<br \/>\n*   <code>{ name = 'Misafir', age = 0, city = 'Bilinmiyor' }<\/code> k\u0131sm\u0131, objenin i\u00e7indeki \u00f6zelliklere varsay\u0131lan de\u011ferler atar.<br \/>\n*   <code>= {}<\/code> k\u0131sm\u0131 ise, e\u011fer fonksiyon <code>displayUser()<\/code> \u015feklinde hi\u00e7 arg\u00fcman olmadan \u00e7a\u011fr\u0131l\u0131rsa, <code>user<\/code> parametresinin varsay\u0131lan olarak bo\u015f bir obje olmas\u0131n\u0131 sa\u011flar. Bu sayede, fonksiyonun i\u00e7inde y\u0131k\u0131c\u0131 atama i\u015flemi g\u00fcvenli bir \u015fekilde ger\u00e7ekle\u015ftirilebilir. Aksi takdirde, <code>displayUser()<\/code> \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda <code>undefined<\/code> \u00fczerinde y\u0131k\u0131c\u0131 atama yapmaya \u00e7al\u0131\u015f\u0131laca\u011f\u0131 i\u00e7in hata al\u0131nabilirdi.<\/p>\n<p>Bu kombinasyon, fonksiyonlara opsiyonel yap\u0131land\u0131rma objeleri ge\u00e7irmek i\u00e7in modern ve temiz bir yol sunar.<\/p>\n<h3>Varsay\u0131lan Parametrelerin Avantajlar\u0131<\/h3>\n<p>Varsay\u0131lan parametreler, JavaScript geli\u015ftirme s\u00fcrecine bir\u00e7ok \u00f6nemli avantaj getirmi\u015ftir:<\/p>\n<p>1.  <strong>Kodun Okunabilirli\u011fi ve Anla\u015f\u0131labilirli\u011fi:<\/strong> Fonksiyon imzas\u0131n\u0131n kendisi, hangi parametrelerin opsiyonel oldu\u011funu ve varsay\u0131lan de\u011ferlerinin ne oldu\u011funu a\u00e7\u0131k\u00e7a belirtir. Bu, fonksiyonun ne bekledi\u011fini anlamak i\u00e7in fonksiyon g\u00f6vdesini inceleme ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r. Kod daha deklaratif ve kendi kendini a\u00e7\u0131klay\u0131c\u0131 hale gelir.<\/p>\n<p>2.  <strong>Daha Az Hata Potansiyeli:<\/strong> ES6 \u00f6ncesi <code>||<\/code> operat\u00f6r\u00fcn\u00fcn falsy de\u011ferlerle ilgili sorunlar\u0131 veya uzun <code>if (typeof param === 'undefined')<\/code> bloklar\u0131n\u0131n getirdi\u011fi karma\u015f\u0131kl\u0131k ortadan kalkar. Bu, daha az mant\u0131ksal hata ve daha g\u00fcvenilir kod anlam\u0131na gelir.<\/p>\n<p>3.  <strong>Daha Kolay Bak\u0131m:<\/strong> Fonksiyonun varsay\u0131lan davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftirmek veya yeni opsiyonel parametreler eklemek \u00e7ok daha kolayd\u0131r. De\u011fi\u015fiklikler do\u011frudan fonksiyon imzas\u0131nda yap\u0131l\u0131r, bu da kodun daha az yay\u0131lmas\u0131n\u0131 ve y\u00f6netilmesini kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>4.  <strong>Daha Temiz ve \u00d6zl\u00fc Kod:<\/strong> Varsay\u0131lan de\u011fer atama mant\u0131\u011f\u0131, fonksiyon g\u00f6vdesinden fonksiyon imzas\u0131na ta\u015f\u0131narak kod sat\u0131r\u0131 say\u0131s\u0131n\u0131 azalt\u0131r ve fonksiyon g\u00f6vdesini ana i\u015f mant\u0131\u011f\u0131na odaklanacak \u015fekilde temizler.<\/p>\n<p>5.  <strong>Geli\u015ftirici Deneyimi:<\/strong> Varsay\u0131lan parametreler, modern programlama dillerinde yayg\u0131n olarak bulunan bir \u00f6zelliktir. JavaScript&#8217;e bu \u00f6zelli\u011fin eklenmesi, dilin modernli\u011fini art\u0131r\u0131r ve geli\u015ftiricilere daha tan\u0131d\u0131k ve verimli bir yazma deneyimi sunar.<\/p>\n<p>6.  <strong>Esneklik:<\/strong> Fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131 daha esnek hale getirir. Geli\u015ftiriciler, her parametreyi a\u00e7\u0131k\u00e7a belirtmek zorunda kalmadan fonksiyonlar\u0131 \u00e7a\u011f\u0131rabilir, bu da API&#8217;lerin kullan\u0131m\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>Dikkat Edilmesi Gerekenler ve Potansiyel Tuzaklar<\/h3>\n<p>Varsay\u0131lan parametreler g\u00fc\u00e7l\u00fc bir \u00f6zellik olsa da, kullan\u0131rken ak\u0131lda tutulmas\u0131 gereken baz\u0131 noktalar vard\u0131r:<\/p>\n<p>1.  <strong><code>null<\/code> ve <code>undefined<\/code> Fark\u0131:<\/strong> Yukar\u0131da da belirtildi\u011fi gibi, <code>null<\/code> bir de\u011fer olarak kabul edilir ve varsay\u0131lan parametreyi tetiklemez. Bu, bilin\u00e7li olarak <code>null<\/code> ge\u00e7irmek istedi\u011finiz durumlarda faydal\u0131d\u0131r, ancak beklenen davran\u0131\u015f\u0131n <code>undefined<\/code> gibi varsay\u0131lan de\u011feri tetiklemesi oldu\u011fu durumlarda kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir.<\/p>\n<p>2.  <strong>Parametre S\u0131ras\u0131 ve Ba\u011f\u0131ml\u0131l\u0131k:<\/strong> Varsay\u0131lan bir parametre, yaln\u0131zca kendisinden \u00f6nce tan\u0131mlanm\u0131\u015f parametrelere eri\u015febilir. Sa\u011fdan sola ba\u011f\u0131ml\u0131l\u0131k m\u00fcmk\u00fcn de\u011fildir ve <code>ReferenceError<\/code> hatas\u0131na yol a\u00e7ar. Bu, fonksiyon parametrelerini tasarlarken dikkatli olunmas\u0131 gereken bir noktad\u0131r.<\/p>\n<p>3.  <strong>Performans Etkileri (Tembel De\u011ferlendirme):<\/strong> Varsay\u0131lan de\u011fer olarak karma\u015f\u0131k ifadeler veya fonksiyon \u00e7a\u011fr\u0131lar\u0131 kullan\u0131ld\u0131\u011f\u0131nda, bunlar\u0131n sadece ihtiya\u00e7 duyuldu\u011funda de\u011ferlendirildi\u011fini unutmay\u0131n. Bu genellikle bir avantaj olsa da, yan etkileri olan veya pahal\u0131 fonksiyonlar\u0131 varsay\u0131lan de\u011fer olarak kullan\u0131rken, bu fonksiyonun ne zaman ve neden \u00e7a\u011fr\u0131ld\u0131\u011f\u0131n\u0131 anlamak \u00f6nemlidir.<\/p>\n<p>4.  <strong>Mutasyon ve Referans Tipleri:<\/strong> Varsay\u0131lan de\u011fer olarak bir obje veya dizi gibi referans tipleri kullan\u0131ld\u0131\u011f\u0131nda dikkatli olunmal\u0131d\u0131r. E\u011fer varsay\u0131lan obje\/dizi de\u011fi\u015ftirilirse, bu de\u011fi\u015fiklik sonraki \u00e7a\u011fr\u0131larda da kal\u0131c\u0131 olabilir, \u00e7\u00fcnk\u00fc varsay\u0131lan de\u011ferler bir kere olu\u015fturulur ve yeniden kullan\u0131labilir.<\/p>\n<pre><code class=\"language-javascript\">function addToList(item, list = []) {\n      list.push(item);\n      return list;\n    }\n\n    console.log(addToList('Elma')); \/\/ ['Elma']\n    console.log(addToList('Armut')); \/\/ ['Elma', 'Armut'] - Beklenmeyen davran\u0131\u015f!<\/code><\/pre>\n<p>    Bu sorunu \u00e7\u00f6zmek i\u00e7in, varsay\u0131lan de\u011fer olarak her zaman yeni bir referans tipi olu\u015fturulmas\u0131n\u0131 sa\u011flamak gerekir, genellikle bir fonksiyon \u00e7a\u011fr\u0131s\u0131 ile:<\/p>\n<pre><code class=\"language-javascript\">function addToListSafe(item, list = []) { \/\/ list = [] burada her \u00e7a\u011fr\u0131da yeni bir dizi olu\u015fturur\n      list.push(item);\n      return list;\n    }\n\n    console.log(addToListSafe('Elma')); \/\/ ['Elma']\n    console.log(addToListSafe('Armut')); \/\/ ['Armut'] - Do\u011fru davran\u0131\u015f<\/code><\/pre>\n<p>    Ancak, bu \u00f6rnek asl\u0131nda <code>list = []<\/code> varsay\u0131lan\u0131n\u0131n her \u00e7a\u011fr\u0131da yeni bir dizi olu\u015fturdu\u011funu g\u00f6stermez. JavaScript&#8217;te varsay\u0131lan parametreler, fonksiyon her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda ve ilgili parametre <code>undefined<\/code> oldu\u011funda yeniden de\u011ferlendirilir. Yani <code>list = []<\/code> her \u00e7a\u011fr\u0131da yeni bir bo\u015f dizi olu\u015fturur. Yukar\u0131daki <code>addToList<\/code> \u00f6rne\u011finde sorun yoktur. San\u0131r\u0131m bu noktada ben de bir yan\u0131lg\u0131ya d\u00fc\u015ft\u00fcm. As\u0131l problem Python gibi dillerde varsay\u0131lan de\u011ferlerin bir kere de\u011ferlendirilip saklanmas\u0131yla ilgilidir. JavaScript&#8217;te bu durum b\u00f6yle de\u011fildir.<\/p>\n<p>    <strong>Do\u011fru d\u00fczeltme ve a\u00e7\u0131klama:<\/strong> JavaScript&#8217;te varsay\u0131lan de\u011ferler her fonksiyon \u00e7a\u011fr\u0131s\u0131 i\u00e7in yeniden de\u011ferlendirilir, bu nedenle referans tiplerle yukar\u0131daki gibi bir sorun ya\u015fanmaz. <code>list = []<\/code> ifadesi, <code>list<\/code> parametresi <code>undefined<\/code> oldu\u011funda her seferinde yeni bir bo\u015f dizi olu\u015fturur. Python&#8217;daki gibi bir &#8220;tekil varsay\u0131lan obje&#8221; sorunu JavaScript&#8217;te yoktur. Bu, JavaScript&#8217;in varsay\u0131lan parametrelerinin daha g\u00fcvenli ve beklendi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p>    Bu yan\u0131lg\u0131, varsay\u0131lan parametreler \u00fczerine yaz\u0131lan bir\u00e7ok makalede ve tart\u0131\u015fmada s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir noktad\u0131r ve JavaScript&#8217;in bu konuda di\u011fer baz\u0131 dillerden farkl\u0131 davrand\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h3>Pratik Uygulama \u00d6rnekleri<\/h3>\n<p>Varsay\u0131lan parametrelerin g\u00fcnl\u00fck geli\u015ftirme pratiklerinde nas\u0131l kullan\u0131labilece\u011fine dair birka\u00e7 \u00f6rnek:<\/p>\n<h4>1. Kullan\u0131c\u0131 Profili G\u00f6r\u00fcnt\u00fcleme<\/h4>\n<pre><code class=\"language-javascript\">function displayUserProfile({\n  username = 'guest_user',\n  email = 'no_email@example.com',\n  isActive = false,\n  roles = ['viewer'],\n  lastLogin = new Date().toLocaleDateString()\n} = {}) {\n  console.log(<code>--- Kullan\u0131c\u0131 Profili ---<\/code>);\n  console.log(<code>Kullan\u0131c\u0131 Ad\u0131: ${username}<\/code>);\n  console.log(<code>E-posta: ${email}<\/code>);\n  console.log(<code>Aktif: ${isActive ? 'Evet' : 'Hay\u0131r'}<\/code>);\n  console.log(<code>Roller: ${roles.join(', ')}<\/code>);\n  console.log(<code>Son Giri\u015f: ${lastLogin}<\/code>);\n  console.log(<code>------------------------<\/code>);\n}\n\n\/\/ \u00d6rnek Kullan\u0131mlar:\ndisplayUserProfile({ username: 'js_developer', email: 'dev@example.com', isActive: true });\n\/\/ Sadece kullan\u0131c\u0131 ad\u0131 ve aktiflik belirtildi, di\u011ferleri varsay\u0131lan.\n\ndisplayUserProfile({ roles: ['admin', 'editor'] });\n\/\/ Sadece roller belirtildi, di\u011ferleri varsay\u0131lan.\n\ndisplayUserProfile();\n\/\/ T\u00fcm parametreler varsay\u0131lan de\u011ferlerini al\u0131r.\n\ndisplayUserProfile(null); \/\/ TypeError: Cannot destructure property 'username' of 'null'<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>displayUserProfile<\/code> fonksiyonu, bir obje olarak kullan\u0131c\u0131 bilgilerini al\u0131r ve y\u0131k\u0131c\u0131 atama ile her \u00f6zelli\u011fe varsay\u0131lan de\u011ferler atar. E\u011fer fonksiyon arg\u00fcmans\u0131z \u00e7a\u011fr\u0131l\u0131rsa (<code>displayUserProfile()<\/code>), d\u0131\u015ftaki <code>= {}<\/code> sayesinde bo\u015f bir obje varsay\u0131lan olarak kullan\u0131l\u0131r, b\u00f6ylece i\u00e7 y\u0131k\u0131c\u0131 atama g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015f\u0131r.<\/p>\n<h4>2. HTTP \u0130stekleri \u0130\u00e7in Yap\u0131land\u0131rma<\/h4>\n<pre><code class=\"language-javascript\">function makeHttpRequest(url, {\n  method = 'GET',\n  headers = { 'Content-Type': 'application\/json' },\n  body = null,\n  timeout = 5000\n} = {}) {\n  console.log(<code>\u0130stek Yap\u0131l\u0131yor: ${url}<\/code>);\n  console.log(<code>Metod: ${method}<\/code>);\n  console.log(<code>Ba\u015fl\u0131klar:<\/code>, headers);\n  console.log(<code>G\u00f6vde:<\/code>, body);\n  console.log(<code>Zaman A\u015f\u0131m\u0131: ${timeout}ms<\/code>);\n\n  \/\/ Ger\u00e7ek bir HTTP iste\u011fi burada yap\u0131labilir (fetch, axios vb. ile)\n  \/\/ return fetch(url, { method, headers, body, timeout });\n}\n\nmakeHttpRequest('\/api\/users');\n\/\/ Varsay\u0131lan GET metodu, ba\u015fl\u0131klar, null g\u00f6vde, 5000ms zaman a\u015f\u0131m\u0131\n\nmakeHttpRequest('\/api\/products', { method: 'POST', body: JSON.stringify({ name: 'New Product' }), timeout: 10000 });\n\/\/ \u00d6zel metod, g\u00f6vde ve zaman a\u015f\u0131m\u0131\n\nmakeHttpRequest('\/api\/status', { headers: { 'Authorization': 'Bearer token123' } });\n\/\/ Sadece ba\u015fl\u0131klar \u00f6zelle\u015ftirildi<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>makeHttpRequest<\/code> fonksiyonu bir <code>url<\/code> ve opsiyonel bir yap\u0131land\u0131rma objesi al\u0131r. Yap\u0131land\u0131rma objesi i\u00e7indeki \u00f6zelliklere varsay\u0131lan de\u011ferler atanm\u0131\u015ft\u0131r. Bu, fonksiyonun hem esnek olmas\u0131n\u0131 sa\u011flar hem de \u00e7o\u011fu durumda sadece <code>url<\/code> ile \u00e7a\u011fr\u0131labilmesine imkan tan\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JavaScript&#8217;in ES6 (ECMAScript 2015) s\u00fcr\u00fcm\u00fcyle tan\u0131t\u0131lan varsay\u0131lan parametreler, dilin fonksiyon tan\u0131mlama yeteneklerini \u00f6nemli \u00f6l\u00e7\u00fcde geli\u015ftirmi\u015f ve modern JavaScript geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Bu \u00f6zellik, ES6 \u00f6ncesi d\u00f6nemdeki varsay\u0131lan de\u011fer atama karma\u015f\u0131kl\u0131klar\u0131n\u0131 ortadan kald\u0131rarak, kodun daha temiz, daha okunabilir ve daha az hataya a\u00e7\u0131k olmas\u0131n\u0131 sa\u011flam\u0131\u015ft\u0131r.<\/p>\n<p>Varsay\u0131lan parametreler sayesinde geli\u015ftiriciler, fonksiyon imzalar\u0131n\u0131 daha a\u00e7\u0131klay\u0131c\u0131 hale getirebilir, <code>undefined<\/code> kontrolleriyle dolu yorucu <code>if<\/code> bloklar\u0131ndan ka\u00e7\u0131nabilir ve daha esnek API&#8217;ler tasarlayabilirler. <code>null<\/code> ve <code>undefined<\/code> aras\u0131ndaki fark\u0131 anlamak, tembel de\u011ferlendirme prensibini kavramak ve y\u0131k\u0131c\u0131 atama ile birle\u015ftirildi\u011finde sundu\u011fu g\u00fc\u00e7l\u00fc kombinasyonlar\u0131 bilmek, bu \u00f6zelli\u011fi tam potansiyeliyle kullanman\u0131n anahtar\u0131d\u0131r.<\/p>\n<p>\u00d6zetle, varsay\u0131lan parametreler, JavaScript&#8217;i daha modern, daha verimli ve geli\u015ftirici dostu bir dil haline getiren \u00f6nemli bir ad\u0131md\u0131r. G\u00fcn\u00fcm\u00fcz JavaScript projelerinde bu \u00f6zelli\u011fi aktif olarak kullanmak, hem kod kalitesini art\u0131r\u0131r hem de geli\u015ftirme s\u00fcrecini daha keyifli hale getirir.<\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript&#8217;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik\nJavaScript, web&#8217;in kalbinde yer alan dinamik ve esnek bir programlama di","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-37328","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 Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik - 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-parametreler-es6-ile-gelen-guclu-bir-ozellik\/\" \/>\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 Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik\" \/>\n<meta property=\"og:description\" content=\"JavaScript&#039;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik JavaScript, web&#039;in kalbinde yer alan dinamik ve esnek bir programlama di\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-30T22:40:43+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=\"17 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-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik\",\"datePublished\":\"2025-12-30T22:40:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/\"},\"wordCount\":2518,\"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-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/\",\"name\":\"JavaScript'te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-30T22:40:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik\"}]},{\"@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 Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik - 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-parametreler-es6-ile-gelen-guclu-bir-ozellik\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik","og_description":"JavaScript'te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik JavaScript, web'in kalbinde yer alan dinamik ve esnek bir programlama di","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-30T22:40:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik","datePublished":"2025-12-30T22:40:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/"},"wordCount":2518,"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-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/","name":"JavaScript'te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-30T22:40:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-varsayilan-parametreler-es6-ile-gelen-guclu-bir-ozellik\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;te Varsay\u0131lan Parametreler: ES6 ile Gelen G\u00fc\u00e7l\u00fc Bir \u00d6zellik"}]},{"@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\/37328","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=37328"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37328\/revisions"}],"predecessor-version":[{"id":37329,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37328\/revisions\/37329"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}