{"id":34972,"date":"2025-11-24T08:40:43","date_gmt":"2025-11-24T05:40:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34972"},"modified":"2025-11-24T08:40:43","modified_gmt":"2025-11-24T05:40:43","slug":"template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/","title":{"rendered":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131<\/h2>\n<h3>Giri\u015f: JavaScript&#8217;te Dizelerin Evrimi<\/h3>\n<p>JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olarak s\u00fcrekli evrim ge\u00e7iren bir dildir. ES6 (ECMAScript 2015) ile gelen bir\u00e7ok yenilik, dilin modern ihtiya\u00e7lara daha iyi yan\u0131t vermesini sa\u011flam\u0131\u015ft\u0131r. Bu yeniliklerden biri de &#8220;Template Literals&#8221; veya T\u00fcrk\u00e7e ad\u0131yla &#8220;\u015eablon Dizeleri&#8221;dir. \u015eablon Dizeleri, JavaScript&#8217;te dizelerle \u00e7al\u0131\u015fma \u015feklimizi k\u00f6kten de\u011fi\u015ftirerek, daha okunabilir, esnek ve g\u00fc\u00e7l\u00fc bir yap\u0131 sunmu\u015ftur. Geleneksel dize birle\u015ftirme y\u00f6ntemlerinin (art\u0131 operat\u00f6r\u00fcyle <code>+<\/code> veya <code>concat()<\/code> metoduyla) getirdi\u011fi zorluklar, \u00f6zellikle \u00e7ok sat\u0131rl\u0131 dizelerde ve de\u011fi\u015fkenlerin dize i\u00e7ine yerle\u015ftirilmesinde (interpolation) kendini g\u00f6steriyordu. Bu zorluklar, kodun karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 art\u0131r\u0131yor, hata yapma olas\u0131l\u0131\u011f\u0131n\u0131 y\u00fckseltiyor ve okunabilirli\u011fi d\u00fc\u015f\u00fcr\u00fcyordu.<\/p>\n<p>\u015eablon Dizeleri, bu sorunlara zarif bir \u00e7\u00f6z\u00fcm getirerek, geli\u015ftiricilere dizelerle \u00e7al\u0131\u015fma konusunda yeni bir paradigma sunmu\u015ftur. Art\u0131k \u00e7ok sat\u0131rl\u0131 dizeleri kolayca olu\u015fturabilir, de\u011fi\u015fkenleri ve ifadeleri do\u011frudan dize i\u00e7ine yerle\u015ftirebilir ve hatta dizeleri \u00f6zel fonksiyonlarla i\u015fleyebiliriz. Bu makalede, \u015eablon Dizelerinin temel s\u00f6zdiziminden ileri d\u00fczey kullan\u0131m alanlar\u0131na, performans etkilerinden en iyi uygulama y\u00f6ntemlerine kadar her y\u00f6n\u00fcn\u00fc detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>\u015eablon Dizelerinin Temel S\u00f6zdizimi: Ters T\u0131rnaklar (Backticks)<\/h3>\n<p>\u015eablon Dizeleri, geleneksel tek t\u0131rnak (<code>'<\/code>) veya \u00e7ift t\u0131rnak (<code>\"<\/code>) yerine ters t\u0131rnak (`<code> <\/code> `<code>) karakteri kullan\u0131larak tan\u0131mlan\u0131r. Bu basit s\u00f6zdizimi de\u011fi\u015fikli\u011fi, \u015eablon Dizelerinin sundu\u011fu t\u00fcm g\u00fc\u00e7l\u00fc \u00f6zelliklerin kap\u0131s\u0131n\u0131 a\u00e7ar.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Geleneksel dize\nconst gelenekselDize = 'Merhaba d\u00fcnya!';\n\n\/\/ \u015eablon Dizesi\nconst sablonDizesi = <\/code>Merhaba d\u00fcnya!<code>;\n\nconsole.log(gelenekselDize); \/\/ Merhaba d\u00fcnya!\nconsole.log(sablonDizesi);   \/\/ Merhaba d\u00fcnya!<\/code><\/pre>\n<p>\u0130lk bak\u0131\u015fta aralar\u0131nda bir fark yok gibi g\u00f6r\u00fcnse de, ters t\u0131rnaklar\u0131n kullan\u0131m\u0131 \u015eablon Dizelerinin temelini olu\u015fturur ve di\u011fer t\u00fcm \u00f6zelliklerinin anahtar\u0131d\u0131r.<\/p>\n<h3>\u00c7ok Sat\u0131rl\u0131 Dizeler (Multi-line Strings)<\/h3>\n<p>Geleneksel JavaScript dizelerinde \u00e7ok sat\u0131rl\u0131 metin olu\u015fturmak olduk\u00e7a zahmetliydi. Her sat\u0131r\u0131n sonunda <\/code>\\n<code> (yeni sat\u0131r) karakteri kullanmak veya dizeleri birle\u015ftirmek gerekiyordu. Bu durum, \u00f6zellikle uzun metin bloklar\u0131 veya HTML\/XML yap\u0131lar\u0131 olu\u015ftururken kodun okunabilirli\u011fini ciddi \u015fekilde d\u00fc\u015f\u00fcr\u00fcyordu.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Geleneksel \u00e7ok sat\u0131rl\u0131 dize\nconst gelenekselCokSatirli = 'Bu ilk sat\u0131r.\\n' +\n                             'Bu ikinci sat\u0131r.\\n' +\n                             'Bu da \u00fc\u00e7\u00fcnc\u00fc sat\u0131r.';\nconsole.log(gelenekselCokSatirli);\n\n\/* \u00c7\u0131kt\u0131:\nBu ilk sat\u0131r.\nBu ikinci sat\u0131r.\nBu da \u00fc\u00e7\u00fcnc\u00fc sat\u0131r.\n*\/<\/code><\/pre>\n<p>\u015eablon Dizeleri ile \u00e7ok sat\u0131rl\u0131 metin olu\u015fturmak ise son derece basittir. Ters t\u0131rnaklar aras\u0131na yazd\u0131\u011f\u0131n\u0131z metin, aynen yazd\u0131\u011f\u0131n\u0131z gibi yeni sat\u0131r karakterlerini korur.<\/p>\n<pre><code class=\"language-javascript\">\/\/ \u015eablon Dizesi ile \u00e7ok sat\u0131rl\u0131 dize\nconst sablonCokSatirli = <\/code>Bu ilk sat\u0131r.\nBu ikinci sat\u0131r.\nBu da \u00fc\u00e7\u00fcnc\u00fc sat\u0131r.<code>;\nconsole.log(sablonCokSatirli);\n\n\/* \u00c7\u0131kt\u0131:\nBu ilk sat\u0131r.\nBu ikinci sat\u0131r.\nBu da \u00fc\u00e7\u00fcnc\u00fc sat\u0131r.\n*\/<\/code><\/pre>\n<p>Bu \u00f6zellik, \u00f6zellikle kod i\u00e7inde k\u00fc\u00e7\u00fck HTML par\u00e7alar\u0131, SQL sorgular\u0131 veya uzun metin mesajlar\u0131 tan\u0131mlarken okunabilirli\u011fi ve yaz\u0131m kolayl\u0131\u011f\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<\/p>\n<h3>Dize \u0130\u00e7ine De\u011fer Yerle\u015ftirme (String Interpolation \/ Expression Interpolation)<\/h3>\n<p>\u015eablon Dizelerinin en g\u00fc\u00e7l\u00fc ve en \u00e7ok kullan\u0131lan \u00f6zelliklerinden biri, dize i\u00e7ine do\u011frudan de\u011fi\u015fkenleri veya JavaScript ifadelerini yerle\u015ftirebilme yetene\u011fidir. Bu \u00f6zelli\u011fe \"Dize \u0130\u00e7ine De\u011fer Yerle\u015ftirme\" veya \"\u0130fade Yerle\u015ftirme\" denir. Geleneksel olarak, de\u011fi\u015fkenleri bir dizeye eklemek i\u00e7in art\u0131 (<\/code>+<code>) operat\u00f6r\u00fcn\u00fc kullanmak gerekiyordu, bu da karma\u015f\u0131k dizelerde kafa kar\u0131\u015ft\u0131r\u0131c\u0131 ve hataya a\u00e7\u0131k bir yap\u0131 olu\u015fturuyordu.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Geleneksel dize birle\u015ftirme\nconst isim = 'Ali';\nconst yas = 30;\nconst mesajGeleneksel = 'Merhaba, benim ad\u0131m ' + isim + ' ve ben ' + yas + ' ya\u015f\u0131nday\u0131m.';\nconsole.log(mesajGeleneksel); \/\/ Merhaba, benim ad\u0131m Ali ve ben 30 ya\u015f\u0131nday\u0131m.<\/code><\/pre>\n<p>\u015eablon Dizeleri ile dize i\u00e7ine de\u011fer yerle\u015ftirme, <\/code>${ifade}<code> s\u00f6zdizimi kullan\u0131larak yap\u0131l\u0131r. Bu sayede, de\u011fi\u015fkenler, aritmetik i\u015flemler, fonksiyon \u00e7a\u011fr\u0131lar\u0131 veya herhangi bir JavaScript ifadesi do\u011frudan dize i\u00e7ine g\u00f6m\u00fclebilir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ \u015eablon Dizesi ile dize i\u00e7ine de\u011fer yerle\u015ftirme\nconst isim = 'Ali';\nconst yas = 30;\nconst mesajSablon = <\/code>Merhaba, benim ad\u0131m ${isim} ve ben ${yas} ya\u015f\u0131nday\u0131m.<code>;\nconsole.log(mesajSablon); \/\/ Merhaba, benim ad\u0131m Ali ve ben 30 ya\u015f\u0131nday\u0131m.<\/code><\/pre>\n<p>Bu \u00f6zellik, kodun daha temiz, daha okunabilir ve daha anla\u015f\u0131l\u0131r olmas\u0131n\u0131 sa\u011flar. Sadece de\u011fi\u015fkenler de\u011fil, her t\u00fcrl\u00fc JavaScript ifadesi kullan\u0131labilir:<\/p>\n<p>*   <strong>Aritmetik \u0130\u015flemler:<\/strong><\/p>\n<pre><code class=\"language-javascript\">const fiyat = 10;\n    const miktar = 3;\n    const toplam = <\/code>Toplam maliyet: ${fiyat * miktar} TL.<code>;\n    console.log(toplam); \/\/ Toplam maliyet: 30 TL.<\/code><\/pre>\n<p>*   <strong>Fonksiyon \u00c7a\u011fr\u0131lar\u0131:<\/strong><\/p>\n<pre><code class=\"language-javascript\">function selamlama(ad) {\n        return <\/code>Merhaba, ${ad}!<code>;\n    }\n    const kullanici = 'Ay\u015fe';\n    const selamlamaMesaji = <\/code>Kullan\u0131c\u0131ya mesaj: ${selamlama(kullanici)}<code>;\n    console.log(selamlamaMesaji); \/\/ Kullan\u0131c\u0131ya mesaj: Merhaba, Ay\u015fe!<\/code><\/pre>\n<p>*   <strong>Ternary Operat\u00f6rleri (Ko\u015fullu \u0130fadeler):<\/strong><\/p>\n<pre><code class=\"language-javascript\">const durum = true;\n    const mesajDurum = <\/code>Durum: ${durum ? 'Aktif' : 'Pasif'}<code>;\n    console.log(mesajDurum); \/\/ Durum: Aktif<\/code><\/pre>\n<p>*   <strong>Nesne \u00d6zellikleri ve Dizi Elemanlar\u0131:<\/strong><\/p>\n<pre><code class=\"language-javascript\">const urun = { ad: 'Laptop', fiyat: 1200 };\n    const renkler = ['k\u0131rm\u0131z\u0131', 'mavi'];\n    const urunDetay = <\/code>\u00dcr\u00fcn ad\u0131: ${urun.ad}, Fiyat: ${urun.fiyat} TL, Mevcut renk: ${renkler[1]}.<code>;\n    console.log(urunDetay); \/\/ \u00dcr\u00fcn ad\u0131: Laptop, Fiyat: 1200 TL, Mevcut renk: mavi.<\/code><\/pre>\n<p>Dize i\u00e7ine de\u011fer yerle\u015ftirme, \u00f6zellikle dinamik i\u00e7erik olu\u015ftururken (\u00f6rne\u011fin, bir web sayfas\u0131nda kullan\u0131c\u0131 ad\u0131n\u0131 g\u00f6sterme, bir e-posta tasla\u011f\u0131 olu\u015fturma) vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir.<\/p>\n<h3>\u0130\u00e7 \u0130\u00e7e \u015eablon Dizeleri (Nested Template Literals)<\/h3>\n<p>\u00c7ok s\u0131k kullan\u0131lmasa da, \u015eablon Dizeleri i\u00e7 i\u00e7e de kullan\u0131labilir. Bu, \u00f6zellikle karma\u015f\u0131k veya dinamik olarak olu\u015fturulan dize par\u00e7ac\u0131klar\u0131n\u0131 birle\u015ftirmek gerekti\u011finde faydal\u0131 olabilir. \u0130\u00e7 i\u00e7e kullan\u0131m, bir \u015eablon Dizesi i\u00e7indeki bir ifadenin ( <\/code>${}<code> i\u00e7inde) ba\u015fka bir \u015eablon Dizesi d\u00f6nd\u00fcrmesiyle ger\u00e7ekle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">const anahtarKelime = 'JavaScript';\nconst versiyon = 'ES6';\n\nconst icerik = <\/code>Bu makale ${anahtarKelime} hakk\u0131nda.\n${<code>\u00d6zellikle ${versiyon} ile gelen yeniliklere odaklan\u0131lm\u0131\u015ft\u0131r.<\/code>}<code>;\n\nconsole.log(icerik);\n\/* \u00c7\u0131kt\u0131:\nBu makale JavaScript hakk\u0131nda.\n\u00d6zellikle ES6 ile gelen yeniliklere odaklan\u0131lm\u0131\u015ft\u0131r.\n*\/<\/code><\/pre>\n<p>Bu \u00f6rnekte, ikinci sat\u0131rdaki <\/code>${}<code> ifadesi i\u00e7inde ba\u015fka bir \u015eablon Dizesi tan\u0131mlanm\u0131\u015ft\u0131r. Bu, daha mod\u00fcler ve okunabilir dize olu\u015fturma stratejileri geli\u015ftirmek i\u00e7in kullan\u0131labilir.<\/p>\n<h3>Ters T\u0131rnak ve Dolar \u0130\u015fareti Ka\u00e7\u0131\u015f\u0131 (Escaping Backticks and Dollar Signs)<\/h3>\n<p>Bir \u015eablon Dizesi i\u00e7inde kelimenin tam anlam\u0131yla bir ters t\u0131rnak (<\/code><code> <\/code> `<code>) veya bir dolar i\u015fareti ve a\u00e7\u0131l\u0131\u015f k\u00fcme parantezi (<\/code>${<code>) kullanmak isterseniz, bu karakterleri ka\u00e7\u0131\u015f karakteri (<\/code>\\<code>) ile belirtmeniz gerekir.<\/p>\n<p>*   <strong>Ters T\u0131rnak Ka\u00e7\u0131\u015f\u0131:<\/strong><\/p>\n<pre><code class=\"language-javascript\">const mesaj = <\/code>Bu bir ters t\u0131rnak: \\<code>.<\/code>;\n    console.log(mesaj); \/\/ Bu bir ters t\u0131rnak: <code>.<\/code><\/pre>\n<p>*   <strong>Dolar \u0130\u015fareti ve K\u00fcme Parantezi Ka\u00e7\u0131\u015f\u0131:<\/strong><\/p>\n<pre><code class=\"language-javascript\">const fiyatBilgisi = <\/code>\u00dcr\u00fcn fiyat\u0131 \\$${100}.00 de\u011fil, sadece 100.00 TL.<code>;\n    console.log(fiyatBilgisi); \/\/ \u00dcr\u00fcn fiyat\u0131 $100.00 de\u011fil, sadece 100.00 TL.<\/code><\/pre>\n<p>    Bu \u00f6rnekte, <\/code>${100}<code> ifadesi normal bir interpolasyon olarak i\u015flenirken, <\/code>\\$<code> ifadesi literal bir dolar i\u015fareti olarak yazd\u0131r\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h3>Etiketli \u015eablonlar (Tagged Templates)<\/h3>\n<p>\u015eablon Dizelerinin en geli\u015fmi\u015f ve g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri \"Etiketli \u015eablonlar\"d\u0131r. Etiketli \u015eablonlar, bir \u015eablon Dizesini \u00f6zel bir fonksiyon arac\u0131l\u0131\u011f\u0131yla ayr\u0131\u015ft\u0131rman\u0131za (parse etmenize) olanak tan\u0131r. Bu fonksiyon, dizeyi olu\u015fturan statik metin par\u00e7alar\u0131n\u0131 ve dize i\u00e7ine yerle\u015ftirilen ifadelerin de\u011ferlerini al\u0131r.<\/p>\n<p>S\u00f6zdizimi, bir fonksiyon ad\u0131n\u0131n hemen ard\u0131ndan bir \u015eablon Dizesinin gelmesiyle olu\u015fur: <\/code>tagFonksiyonu<code> <\/code>\u015fablon dizesi<code>.<\/p>\n<pre><code class=\"language-javascript\">function etiketleyici(strings, ...values) {\n    console.log(strings); \/\/ Dizelerin bir dizisi\n    console.log(values);  \/\/ \u0130fadelerin de\u011ferlerinin bir dizisi\n    return \"\u0130\u015flenmi\u015f dize!\";\n}\n\nconst isim = 'Mehmet';\nconst yas = 25;\nconst sonuc = etiketleyici<\/code>Merhaba, benim ad\u0131m ${isim} ve ben ${yas} ya\u015f\u0131nday\u0131m.<code>;\n\nconsole.log(sonuc);\n\/* \u00c7\u0131kt\u0131:\n[ 'Merhaba, benim ad\u0131m ', ' ve ben ', ' ya\u015f\u0131nday\u0131m.', '' ]\n[ 'Mehmet', 25 ]\n\u0130\u015flenmi\u015f dize!\n*\/<\/code><\/pre>\n<p><\/code>etiketleyici<code> fonksiyonu iki ana arg\u00fcman al\u0131r:<br \/>\n1.  <\/code>strings<code>: Bu, \u015eablon Dizesindeki t\u00fcm statik metin par\u00e7alar\u0131n\u0131 i\u00e7eren bir dizidir. \u0130fade yerle\u015ftirme noktalar\u0131 bu diziyi b\u00f6ler. Yukar\u0131daki \u00f6rnekte <\/code>strings<code> dizisi <\/code>[&#8216;Merhaba, benim ad\u0131m &#8216;, &#8216; ve ben &#8216;, &#8216; ya\u015f\u0131nday\u0131m.&#8217;, &#8221;]<code> \u015feklindedir. Dikkat ederseniz, son eleman bo\u015f bir dizedir, \u00e7\u00fcnk\u00fc son ifadeden sonra metin devam etmemektedir.<br \/>\n2.  <\/code>&#8230;values<code>: Bu, dize i\u00e7ine yerle\u015ftirilen t\u00fcm ifadelerin de\u011ferlerini i\u00e7eren bir dizidir. Rest parametresi (<\/code>&#8230;<code>) kullan\u0131larak toplan\u0131r. Yukar\u0131daki \u00f6rnekte <\/code>values<code> dizisi <\/code>[&#8216;Mehmet&#8217;, 25]<code> \u015feklindedir.<\/p>\n<p>Etiketli \u015eablonlar, dizeler \u00fczerinde \u00e7ok \u00e7e\u015fitli \u00f6zel i\u015flemler yapmak i\u00e7in kullan\u0131labilir.<\/p>\n<h4>Etiketli \u015eablonlar\u0131n Kullan\u0131m Alanlar\u0131:<\/h4>\n<p>*   <strong>Dize Temizleme (Sanitization) ve G\u00fcvenlik:<\/strong> Kullan\u0131c\u0131 girdilerini i\u00e7eren HTML dizelerini XSS (Cross-Site Scripting) sald\u0131r\u0131lar\u0131na kar\u015f\u0131 temizlemek i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, kullan\u0131c\u0131dan al\u0131nan verileri HTML'e yerle\u015ftirmeden \u00f6nce \u00f6zel karakterleri (<\/code><<code>, <\/code>><code>, <\/code>&#038;<code>, <\/code>&#8216;<code>, <\/code>&#8220;<code>) ka\u00e7\u0131\u015f karakterlerine d\u00f6n\u00fc\u015ft\u00fcrmek.<\/p>\n<pre><code class=\"language-javascript\">function htmlEscape(str) {\n        return str.replace(\/&\/g, '&amp;')\n                  .replace(\/<\/g, '&lt;')\n                  .replace(\/>\/g, '&gt;')\n                  .replace(\/'\/g, '&apos;')\n                  .replace(\/\"\/g, '&quot;');\n    }\n\n    function safeHTML(strings, ...values) {\n        let result = strings[0];\n        for (let i = 0; i < values.length; i++) {\n            result += htmlEscape(String(values[i])) + strings[i + 1];\n        }\n        return result;\n    }\n\n    const kullaniciYorumu = <\/code><script>alert('XSS!');<\/script><code>;\n    const ad = 'John \"Doe\"';\n\n    const guvenliHTML = safeHTML<\/code><p>Yorum yapan: ${ad}<\/p><p>Yorum: ${kullaniciYorumu}<\/p><code>;\n    console.log(guvenliHTML);\n    \/\/ \u00c7\u0131kt\u0131: <p>Yorum yapan: John &quot;Doe&quot;<\/p><p>Yorum: &lt;script&gt;alert(&apos;XSS!&apos;);&lt;\/script&gt;<\/p><\/code><\/pre>\n<p>    Bu \u00f6rnekte, <\/code>safeHTML<code> etiketi, dizeye yerle\u015ftirilen t\u00fcm de\u011ferleri HTML ka\u00e7\u0131\u015f karakterlerine d\u00f6n\u00fc\u015ft\u00fcrerek olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00f6nler.<\/p>\n<p>*   <strong>Uluslararas\u0131la\u015ft\u0131rma (Internationalization - i18n):<\/strong> Farkl\u0131 diller i\u00e7in metinlerin \u00e7evirisini veya b\u00f6lgesel formatlamas\u0131n\u0131 (tarih, para birimi vb.) y\u00f6netmek.<\/p>\n<pre><code class=\"language-javascript\">function i18n(strings, ...values) {\n        \/\/ Bu basit bir \u00f6rnek, ger\u00e7ek bir i18n k\u00fct\u00fcphanesi daha karma\u015f\u0131k olurdu.\n        const lang = 'tr'; \/\/ Varsay\u0131lan dil\n        const translations = {\n            'Hello, my name is {0} and I am {1} years old.': 'Merhaba, benim ad\u0131m {0} ve ben {1} ya\u015f\u0131nday\u0131m.',\n            'You have {0} new messages.': 'Yeni {0} mesaj\u0131n\u0131z var.',\n            'You have {0} new message.': 'Yeni {0} mesaj\u0131n\u0131z var.'\n        };\n\n        let rawString = strings.join(''); \/\/ Interpolasyon olmadan ham dizeyi birle\u015ftir\n        let translatedString = translations[rawString] || rawString; \/\/ \u00c7eviriyi bul\n\n        \/\/ \u00c7evrilmi\u015f dizeye de\u011ferleri yerle\u015ftir\n        for (let i = 0; i < values.length; i++) {\n            translatedString = translatedString.replace(<\/code>{${i}}<code>, values[i]);\n        }\n        return translatedString;\n    }\n\n    const kullaniciAdi = 'Elif';\n    const mesajSayisi = 5;\n\n    console.log(i18n<\/code>Hello, my name is ${kullaniciAdi} and I am ${30} years old.<code>);\n    console.log(i18n<\/code>You have ${mesajSayisi} new messages.<code>);<\/code><\/pre>\n<p>    Bu \u00f6rnek, basit bir \u00e7eviri mekanizmas\u0131 sunar. Ger\u00e7ek i18n k\u00fct\u00fcphaneleri, \u00e7o\u011ful kurallar\u0131, tarih\/saat formatlamas\u0131 gibi daha geli\u015fmi\u015f \u00f6zellikler sunar ve Etiketli \u015eablonlar bu t\u00fcr k\u00fct\u00fcphaneler i\u00e7in g\u00fc\u00e7l\u00fc bir temel sa\u011flayabilir.<\/p>\n<p>*   <strong>Alana \u00d6zg\u00fc Diller (Domain-Specific Languages - DSLs):<\/strong> SQL sorgular\u0131, CSS kurallar\u0131 veya \u00f6zel \u015fablon dilleri gibi belirli bir alana \u00f6zg\u00fc s\u00f6zdizimlerini i\u015flemek. Pop\u00fcler <\/code>styled-components<code> k\u00fct\u00fcphanesi, CSS DSL'leri olu\u015fturmak i\u00e7in Etiketli \u015eablonlar\u0131 kullan\u0131r.<\/p>\n<pre><code class=\"language-javascript\">function sql(strings, ...values) {\n        let query = strings[0];\n        for (let i = 0; i < values.length; i++) {\n            \/\/ SQL enjeksiyonunu \u00f6nlemek i\u00e7in de\u011ferleri temizleme veya parametreli sorgu haz\u0131rlama\n            \/\/ Basit \u00f6rnek: T\u0131rnak i\u00e7ine alma\n            query += <\/code>'${values[i]}'<code> + strings[i + 1];\n        }\n        return query;\n    }\n\n    const kullaniciID = 123;\n    const kullaniciAdi = 'Ay\u015fe';\n    const sqlSorgu = sql<\/code>SELECT * FROM users WHERE id = ${kullaniciID} AND name = ${kullaniciAdi};<code>;\n    console.log(sqlSorgu); \/\/ SELECT * FROM users WHERE id = '123' AND name = 'Ay\u015fe';<\/code><\/pre>\n<p>    Bu \u00f6rnekte, <\/code>sql<code> etiketi, dizeye yerle\u015ftirilen de\u011ferleri otomatik olarak t\u0131rnak i\u00e7ine alarak bir SQL sorgusu olu\u015fturur. Ger\u00e7ek bir uygulamada, SQL enjeksiyonuna kar\u015f\u0131 daha g\u00fcvenli olmak i\u00e7in parametreli sorgular kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p>*   <strong>Logging ve Debugging:<\/strong> \u00d6zel formatlarda log mesajlar\u0131 olu\u015fturmak.<\/p>\n<p>Etiketli \u015eablonlar, JavaScript'in dize i\u015fleme yeteneklerini standart dize interpolasyonunun \u00f6tesine ta\u015f\u0131yan, \u00e7ok y\u00f6nl\u00fc ve g\u00fc\u00e7l\u00fc bir \u00f6zelliktir.<\/p>\n<h3>Ham Dizeler (Raw Strings): <\/code>String.raw<code><\/h3>\n<p>Normal \u015eablon Dizeleri, ka\u00e7\u0131\u015f dizilerini (\u00f6rne\u011fin <\/code>\\n<code> i\u00e7in yeni sat\u0131r, <\/code>\\t<code> i\u00e7in tab) otomatik olarak i\u015fler ve kar\u015f\u0131l\u0131k gelen karakterlere d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Ancak bazen, dize i\u00e7indeki ka\u00e7\u0131\u015f dizilerinin tam olarak yaz\u0131ld\u0131\u011f\u0131 gibi, yani \"ham\" halleriyle korunmas\u0131n\u0131 isteyebiliriz. \u0130\u015fte bu noktada <\/code>String.raw<code> etiketli \u015fablonu devreye girer.<\/p>\n<p><\/code>String.raw<code> etiketli \u015fablonu, bir dize i\u00e7indeki t\u00fcm ka\u00e7\u0131\u015f dizilerini yoksayar ve onlar\u0131 literal karakterler olarak ele al\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Normal \u015eablon Dizesi\nconst yolNormal = <\/code>C:\\Users\\Documents\\file.txt<code>;\nconsole.log(yolNormal); \/\/ C:UsersDocumentsfile.txt (\\\\u karakterleri nedeniyle 'U' ve 'D' kayboldu!)\n\n\/\/ String.raw ile ham dize\nconst yolHam = String.raw<\/code>C:\\Users\\Documents\\file.txt<code>;\nconsole.log(yolHam); \/\/ C:\\Users\\Documents\\file.txt<\/code><\/pre>\n<p>\u0130lk \u00f6rnekte, <\/code>\\U<code> ve <\/code>\\D<code> gibi ka\u00e7\u0131\u015f dizileri JavaScript taraf\u0131ndan \u00f6zel karakterler olarak yorumlanmaya \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131 i\u00e7in beklenmedik sonu\u00e7lar ortaya \u00e7\u0131km\u0131\u015ft\u0131r (\u00f6rne\u011fin, <\/code>\\U<code> ge\u00e7erli bir Unicode ka\u00e7\u0131\u015f dizisi olmad\u0131\u011f\u0131 i\u00e7in g\u00f6z ard\u0131 edilebilir veya hata verebilir, ancak genel olarak ka\u00e7\u0131\u015f dizileri i\u015flenir). <\/code>String.raw<code> kullan\u0131ld\u0131\u011f\u0131nda ise, <\/code>\\<code> karakteri ve ard\u0131ndan gelen karakterler oldu\u011fu gibi korunur.<\/p>\n<p><\/code>String.raw<code>'\u0131n ana kullan\u0131m alanlar\u0131 \u015funlard\u0131r:<br \/>\n*   <strong>Dosya Yollar\u0131:<\/strong> \u00d6zellikle Windows dosya yollar\u0131 (<\/code>C:\\Program Files\\<code>) gibi ters e\u011fik \u00e7izgi i\u00e7eren yollar\u0131 do\u011fru bir \u015fekilde temsil etmek.<br \/>\n*   <strong>D\u00fczenli \u0130fadeler (Regular Expressions):<\/strong> D\u00fczenli ifade desenlerinde \u00e7ok say\u0131da ters e\u011fik \u00e7izgi kullan\u0131ld\u0131\u011f\u0131nda, bu dizeleri daha okunabilir hale getirmek.<br \/>\n*   <strong>Latex veya Di\u011fer \u00d6zel S\u00f6zdizimleri:<\/strong> Ka\u00e7\u0131\u015f karakterlerinin \u00f6zel anlamlar ta\u015f\u0131d\u0131\u011f\u0131 di\u011fer dilleri veya formatlar\u0131 JavaScript dizeleri i\u00e7inde temsil etmek.<\/p>\n<h3>Performans De\u011ferlendirmesi<\/h3>\n<p>\u015eablon Dizelerinin performans\u0131na ili\u015fkin s\u0131k\u00e7a sorulan bir soru, geleneksel dize birle\u015ftirmeye g\u00f6re daha h\u0131zl\u0131 m\u0131 yoksa daha yava\u015f m\u0131 oldu\u011fudur. Modern JavaScript motorlar\u0131 (V8, SpiderMonkey vb.), hem art\u0131 operat\u00f6r\u00fcyle dize birle\u015ftirmeyi hem de \u015eablon Dizelerini olduk\u00e7a iyi optimize eder.<\/p>\n<p>Genel olarak, k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli uygulamalarda performans fark\u0131 genellikle ihmal edilebilir d\u00fczeydedir. \u015eablon Dizelerinin ana avantaj\u0131 performans de\u011fil, okunabilirlik, yaz\u0131m kolayl\u0131\u011f\u0131 ve sundu\u011fu geli\u015fmi\u015f \u00f6zelliklerdir (\u00e7ok sat\u0131rl\u0131 dizeler, interpolasyon, etiketli \u015fablonlar).<\/p>\n<p>\u00c7ok b\u00fcy\u00fck d\u00f6ng\u00fclerde veya yo\u011fun dize manip\u00fclasyonu gerektiren kritik performans senaryolar\u0131nda, farkl\u0131 y\u00f6ntemlerin (\u00f6rne\u011fin, <\/code>Array.prototype.join()<code> ile bir dizi par\u00e7alar\u0131n\u0131 birle\u015ftirmek) k\u00fc\u00e7\u00fck performans avantajlar\u0131 sa\u011flayabilece\u011fi durumlar olabilir. Ancak bu, genel geli\u015ftirme prati\u011finde nadiren bir endi\u015fe kayna\u011f\u0131d\u0131r. \u00c7o\u011fu durumda, \u015eablon Dizelerinin sundu\u011fu okunabilirlik ve bak\u0131m kolayl\u0131\u011f\u0131, k\u00fc\u00e7\u00fck potansiyel performans farkl\u0131l\u0131klar\u0131ndan daha \u00f6nemlidir.<\/p>\n<h3>Taray\u0131c\u0131 Deste\u011fi ve D\u00f6n\u00fc\u015ft\u00fcrme (Transpilation)<\/h3>\n<p>Template Literals, ES6 (ECMAScript 2015) ile tan\u0131t\u0131lan bir \u00f6zelliktir. Bu nedenle, modern t\u00fcm taray\u0131c\u0131lar (Chrome, Firefox, Edge, Safari, Opera) ve Node.js ortamlar\u0131 taraf\u0131ndan tam olarak desteklenir.<\/p>\n<p>Ancak, eski taray\u0131c\u0131lar\u0131 (\u00f6rne\u011fin Internet Explorer 11 gibi) desteklemeniz gereken durumlarda, \u015eablon Dizeleri do\u011frudan \u00e7al\u0131\u015fmayacakt\u0131r. Bu t\u00fcr senaryolarda, Babel gibi bir \"transpiler\" (d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc) kullanman\u0131z gerekir. Babel, ES6+ kodunu eski taray\u0131c\u0131lar\u0131n anlayabilece\u011fi ES5 koduna d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. \u00d6rne\u011fin, bir \u015eablon Dizesi:<\/p>\n<pre><code class=\"language-javascript\">const ad = 'Emre';\nconst mesaj = <\/code>Merhaba, ${ad}!<code>;<\/code><\/pre>\n<p>Babel taraf\u0131ndan yakla\u015f\u0131k olarak \u015fu \u015fekilde ES5 koduna d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilir:<\/p>\n<pre><code class=\"language-javascript\">var ad = 'Emre';\nvar mesaj = 'Merhaba, ' + ad + '!';<\/code><\/pre>\n<p>G\u00fcn\u00fcm\u00fczde, \u00e7o\u011fu projenin modern taray\u0131c\u0131lar\u0131 hedeflemesi veya zaten bir d\u00f6n\u00fc\u015ft\u00fcrme s\u00fcrecine sahip olmas\u0131 nedeniyle, \u015eablon Dizelerinin uyumlulu\u011fu genellikle bir sorun te\u015fkil etmez.<\/p>\n<h3>En \u0130yi Uygulamalar ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>*   <strong>Daima \u015eablon Dizelerini Tercih Edin:<\/strong> E\u011fer dize birle\u015ftirme, \u00e7ok sat\u0131rl\u0131 dize veya dize i\u00e7ine de\u011fer yerle\u015ftirme yapman\u0131z gerekiyorsa, her zaman \u015eablon Dizelerini tercih edin. Bu, kodunuzu daha okunabilir ve s\u00fcrd\u00fcr\u00fclebilir hale getirecektir.<br \/>\n*   <strong>Okunabilirli\u011fi Art\u0131r\u0131n:<\/strong> Karma\u015f\u0131k ifadeler yerine, ifadeleri daha k\u00fc\u00e7\u00fck par\u00e7alara ay\u0131rarak veya ayr\u0131 de\u011fi\u015fkenlerde tan\u0131mlayarak dize i\u00e7indeki ifadelerin okunabilirli\u011fini koruyun.<br \/>\n*   <strong>Ko\u015fullu \u0130\u015flemler \u0130\u00e7in Ternary Operat\u00f6r:<\/strong> Dize i\u00e7inde basit ko\u015fullu mant\u0131k i\u00e7in ternary operat\u00f6r\u00fcn\u00fc (<\/code>ko\u015ful ? de\u011fer1 : de\u011fer2<code>) kullanmaktan \u00e7ekinmeyin.<br \/>\n*   <strong>Etiketli \u015eablonlar\u0131 Ak\u0131ll\u0131ca Kullan\u0131n:<\/strong> Etiketli \u015eablonlar g\u00fc\u00e7l\u00fcd\u00fcr, ancak her dize manip\u00fclasyonu i\u00e7in gerekli de\u011fildir. G\u00fcvenlik, uluslararas\u0131la\u015ft\u0131rma veya DSL olu\u015fturma gibi belirli, geli\u015fmi\u015f senaryolar i\u00e7in saklay\u0131n.<br \/>\n*   <strong>Bo\u015fluklara Dikkat Edin:<\/strong> \u015eablon Dizeleri, ters t\u0131rnaklar aras\u0131na yazd\u0131\u011f\u0131n\u0131z t\u00fcm bo\u015fluklar\u0131 (sat\u0131r sonlar\u0131 dahil) korur. Bu, bazen beklenmedik bo\u015fluklara yol a\u00e7abilir. \u00d6zellikle HTML par\u00e7alar\u0131 olu\u015ftururken bu duruma dikkat edin. Gereksiz bo\u015fluklar\u0131 kald\u0131rmak i\u00e7in <\/code>trim()<code> metodunu kullanabilirsiniz.<\/p>\n<h3>Yayg\u0131n Hatalar ve Yanl\u0131\u015f Anlamalar<\/h3>\n<p>*   <strong>Ters T\u0131rnaklar\u0131 Unutmak:<\/strong> \u015eablon Dizeleri i\u00e7in tek veya \u00e7ift t\u0131rnak yerine ters t\u0131rnak (<\/code><code> <\/code> `<code>) kullanmak esast\u0131r. En s\u0131k yap\u0131lan hatalardan biri, interpolasyon veya \u00e7ok sat\u0131rl\u0131 dize ihtiyac\u0131 varken hala geleneksel t\u0131rnaklar\u0131 kullanmakt\u0131r.<br \/>\n*   <strong><\/code>${}<code> \u0130\u00e7inde Ge\u00e7ersiz \u0130fadeler:<\/strong> <\/code>${}<code> i\u00e7ine ge\u00e7erli bir JavaScript ifadesi yazmak \u00f6nemlidir. S\u00f6zdizimi hatas\u0131 olan veya tan\u0131ms\u0131z bir de\u011fi\u015fken kullanan ifadeler hata verecektir.<br \/>\n*   <strong>Etiketli \u015eablon Parametrelerini Yanl\u0131\u015f Anlamak:<\/strong> Etiketli \u015eablon fonksiyonunun <\/code>strings<code> ve <\/code>values<code> parametrelerinin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak \u00f6nemlidir. <\/code>strings<code> dizisinin her zaman <\/code>values<code> dizisinden bir eleman fazla oldu\u011funu unutmay\u0131n.<br \/>\n*   <strong><\/code>String.raw<code>'\u0131n Anlam\u0131n\u0131 Kar\u0131\u015ft\u0131rmak:<\/strong> <\/code>String.raw<code> sadece ka\u00e7\u0131\u015f dizilerini literal olarak ele al\u0131r. Dize interpolasyonunu (<\/code>${}<code>) etkilemez.<\/p>\n<h3>Di\u011fer \u015eablon Motorlar\u0131yla Kar\u015f\u0131la\u015ft\u0131rma<\/h3>\n<p>\u015eablon Dizeleri, React'teki JSX, Vue.js'teki tek dosyal\u0131 bile\u015fen \u015fablonlar\u0131, Handlebars, EJS gibi tam te\u015fekk\u00fcll\u00fc \u015fablon motorlar\u0131ndan farkl\u0131d\u0131r. Bu motorlar genellikle daha karma\u015f\u0131k UI olu\u015fturma, bile\u015fen ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimi, veri ba\u011flama gibi \u00f6zellikler sunar.<\/p>\n<p>\u015eablon Dizeleri ise, JavaScript'in kendi i\u00e7inde yer alan, daha d\u00fc\u015f\u00fck seviyeli bir dize i\u015fleme mekanizmas\u0131d\u0131r. Bir UI \u015fablon motoru olmaktan ziyade, dinamik dizeler olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Ancak, <\/code>styled-components` gibi k\u00fct\u00fcphaneler, Etiketli \u015eablonlar\u0131 kullanarak CSS veya di\u011fer diller i\u00e7in kendi DSL'lerini olu\u015fturarak, JavaScript'in native dize yeteneklerini daha geni\u015f bir ba\u011flamda kullanma potansiyelini g\u00f6stermi\u015ftir.<\/p>\n<p>\u015eablon Dizeleri, karma\u015f\u0131k bir \u015fablon motoruna ihtiya\u00e7 duymadan, k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli dinamik dize gereksinimlerini kar\u015f\u0131lamak i\u00e7in m\u00fckemmel bir \u00e7\u00f6z\u00fcmd\u00fcr. Ayr\u0131ca, daha b\u00fcy\u00fck \u015fablon motorlar\u0131n\u0131n veya UI k\u00fct\u00fcphanelerinin i\u00e7inde dize olu\u015fturma i\u00e7in bir yap\u0131 ta\u015f\u0131 olarak da kullan\u0131labilirler.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Template Literals (\u015eablon Dizeleri), ES6 ile JavaScript'e eklenen en de\u011ferli \u00f6zelliklerden biridir. Geleneksel dize birle\u015ftirme ve \u00e7ok sat\u0131rl\u0131 dize olu\u015fturma y\u00f6ntemlerinin getirdi\u011fi zorluklara zarif ve etkili \u00e7\u00f6z\u00fcmler sunar. \u00c7ok sat\u0131rl\u0131 dizeleri kolayca tan\u0131mlama, de\u011fi\u015fkenleri ve ifadeleri do\u011frudan dize i\u00e7ine yerle\u015ftirme (interpolasyon) ve hatta dizeleri \u00f6zel fonksiyonlarla i\u015fleme (Etiketli \u015eablonlar) yetene\u011fi, geli\u015ftiricilerin daha okunabilir, s\u00fcrd\u00fcr\u00fclebilir ve g\u00fc\u00e7l\u00fc kodlar yazmas\u0131na olanak tan\u0131r.<\/p>\n<p>\u015eablon Dizeleri, sadece s\u00f6zdizimsel bir iyile\u015ftirme olman\u0131n \u00f6tesinde, dize manip\u00fclasyonu i\u00e7in yeni bir paradigma sunarak JavaScript'in ifade g\u00fcc\u00fcn\u00fc art\u0131rm\u0131\u015ft\u0131r. G\u00fcvenlikten uluslararas\u0131la\u015ft\u0131rmaya, DSL olu\u015fturmaktan basit mesajla\u015fmaya kadar geni\u015f bir yelpazede uygulama alan\u0131 bulur. Modern JavaScript geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015f olan \u015eablon Dizelerini anlamak ve etkin bir \u015fekilde kullanmak, her JavaScript geli\u015ftiricisi i\u00e7in kritik \u00f6neme sahiptir. Kodunuzu daha temiz, daha anla\u015f\u0131l\u0131r ve daha verimli hale getirmek i\u00e7in \u015eablon Dizelerini g\u00fcnl\u00fck geli\u015ftirme prati\u011finize dahil etmekten \u00e7ekinmeyin.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131\nGiri\u015f: JavaScript&#8217;te Dizelerin Evrimi\nJavaScript, web geli\u015ftirmenin","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-34972","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>Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131 - 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\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131\" \/>\n<meta property=\"og:description\" content=\"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131 Giri\u015f: JavaScript&#039;te Dizelerin Evrimi JavaScript, web geli\u015ftirmenin\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-24T05: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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131\",\"datePublished\":\"2025-11-24T05:40:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/\"},\"wordCount\":1235,\"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\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/\",\"name\":\"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-24T05:40:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131\"}]},{\"@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":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131 - 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\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/","og_locale":"tr_TR","og_type":"article","og_title":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131","og_description":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131 Giri\u015f: JavaScript'te Dizelerin Evrimi JavaScript, web geli\u015ftirmenin","og_url":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-24T05:40:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131","datePublished":"2025-11-24T05:40:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/"},"wordCount":1235,"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\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/","url":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/","name":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-24T05:40:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/template-literals-in-javascript-es6-es2015-modern-string-isleme-sanati\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Template Literals in JavaScript (ES6 \/ ES2015): Modern String \u0130\u015fleme Sanat\u0131"}]},{"@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\/34972","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=34972"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34972\/revisions"}],"predecessor-version":[{"id":34973,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34972\/revisions\/34973"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}