{"id":32749,"date":"2025-10-25T14:01:33","date_gmt":"2025-10-25T11:01:33","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/"},"modified":"2025-10-25T14:01:33","modified_gmt":"2025-10-25T11:01:33","slug":"60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/","title":{"rendered":"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz"},"content":{"rendered":"<p><body><\/p>\n<p>Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript&#8217;in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz! Bu kapsaml\u0131 rehber, \u201c60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\u201d ile en temel konulardan ileri d\u00fczey uygulamalara kadar uzanan, size \u00f6zel tasarlanm\u0131\u015f bir yol haritas\u0131 sunuyor. Amac\u0131m\u0131z, bu 60 g\u00fcnl\u00fck ser\u00fcvenin sonunda kendinize g\u00fcvenen, ger\u00e7ek d\u00fcnya projeleri geli\u015ftirebilen bir JavaScript geli\u015ftiricisi olman\u0131z\u0131 sa\u011flamak.<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Her g\u00fcn k\u00fc\u00e7\u00fck ad\u0131mlar atmak, b\u00fcy\u00fck hedeflere ula\u015fman\u0131n anahtar\u0131d\u0131r. Disiplinli bir \u00e7al\u0131\u015fma plan\u0131 ile 60 g\u00fcn sonunda bekledi\u011finizden \u00e7ok daha fazlas\u0131n\u0131 ba\u015farabilirsiniz!\n<\/div>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, internet siteleri ve uygulamalar hayat\u0131m\u0131z\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Bu dinamik ve interaktif deneyimleri m\u00fcmk\u00fcn k\u0131lan temel teknolojilerden biri ise \u015f\u00fcphesiz JavaScript&#8217;tir. Peki, JavaScript \u00f6\u011frenmek i\u00e7in neden bu kadar iyi bir zaman? \u00d6ncelikle, web geli\u015ftirme end\u00fcstrisinin kalbinde yer al\u0131r. Taray\u0131c\u0131da \u00e7al\u0131\u015fan tek programlama dili olmas\u0131, onu frontend (\u00f6n y\u00fcz) geli\u015ftirmede mutlak bir g\u00fc\u00e7 haline getirir. Ancak sadece bununla kalmaz; Node.js sayesinde backend (arka y\u00fcz) geli\u015ftirmede, React Native ve Electron gibi framework&#8217;ler ile mobil ve masa\u00fcst\u00fc uygulama geli\u015ftirmede de aktif olarak kullan\u0131l\u0131r. Bu \u00e7e\u015fitlilik, JavaScript&#8217;i \u00f6\u011frenen birine inan\u0131lmaz bir kariyer esnekli\u011fi sunar. Ayr\u0131ca, JavaScript ekosistemi s\u00fcrekli b\u00fcy\u00fcyor ve geli\u015fiyor. Her y\u0131l yeni \u00f6zellikler, k\u00fct\u00fcphaneler ve ara\u00e7lar ekleniyor, bu da geli\u015ftiricilerin daha verimli ve g\u00fc\u00e7l\u00fc uygulamalar yaratmas\u0131na olanak tan\u0131yor.<\/p>\n<p>Bu h\u0131zla geli\u015fen teknoloji d\u00fcnyas\u0131nda rekabet\u00e7i kalmak, s\u00fcrekli \u00f6\u011frenmeyi ve kendinizi geli\u015ftirmeyi gerektirir. JavaScript&#8217;i anlamak, sadece kod yazmaktan \u00f6te, modern web uygulamalar\u0131n\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kavramak demektir. Kullan\u0131c\u0131 deneyimini iyile\u015ftiren interaktif \u00f6zelliklerden, arka planda veri \u00e7ekme i\u015flemlerine kadar her \u015fey JavaScript ile \u015fekillenir. Dolay\u0131s\u0131yla, bu dile hakim olmak, sadece bir programlama dili bilmek de\u011fil, ayn\u0131 zamanda dijital d\u00fcnyan\u0131n gelece\u011fine y\u00f6n veren bir yetene\u011fe sahip olmak anlam\u0131na gelir. Bu nedenle, ister kariyerinizde yeni bir y\u00f6n aray\u0131n, ister mevcut becerilerinizi geli\u015ftirmek isteyin, JavaScript \u00f6\u011frenmek i\u00e7in en do\u011fru zaman \u015fimdi.<\/p>\n<h3>Web Geli\u015ftirmenin Kalbindeki G\u00fc\u00e7: JavaScript Neden Bu Kadar Vazge\u00e7ilmez?<\/h3>\n<p>JavaScript&#8217;in web geli\u015ftirme i\u00e7in bu kadar vazge\u00e7ilmez olmas\u0131n\u0131n temel nedenlerinden biri, web taray\u0131c\u0131lar\u0131nda do\u011fal olarak \u00e7al\u0131\u015fabilen tek dil olmas\u0131d\u0131r. Bu \u00f6zellik, kullan\u0131c\u0131lar\u0131n etkile\u015fimde bulunabildi\u011fi, dinamik ve zengin kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kritik \u00f6neme sahiptir. Bir web sayfas\u0131ndaki form do\u011frulama, animasyonlar, slayt g\u00f6sterileri veya AJAX ile asenkron veri y\u00fckleme gibi t\u00fcm interaktif elementler JavaScript sayesinde hayat bulur. Dahas\u0131, modern web uygulamalar\u0131, geleneksel sayfa yenilemeleri yerine tek sayfa uygulamalar\u0131 (SPA &#8211; Single Page Application) konsepti \u00fczerine kuruludur. React, Angular ve Vue.js gibi pop\u00fcler JavaScript k\u00fct\u00fcphaneleri ve framework&#8217;leri, bu SPA&#8217;lar\u0131n geli\u015ftirilmesini kolayla\u015ft\u0131r\u0131r ve geli\u015ftiricilere ola\u011fan\u00fcst\u00fc ara\u00e7lar sunar.<\/p>\n<p>JavaScript&#8217;in g\u00fcc\u00fc sadece \u00f6n y\u00fcz ile s\u0131n\u0131rl\u0131 de\u011fildir. Node.js&#8217;in ortaya \u00e7\u0131kmas\u0131yla birlikte, JavaScript art\u0131k sunucu taraf\u0131nda da \u00e7al\u0131\u015fabilen tam te\u015fekk\u00fcll\u00fc bir dil haline gelmi\u015ftir. Bu durum, tam y\u0131\u011f\u0131n (full-stack) geli\u015ftiricilerin hem frontend hem de backend i\u00e7in tek bir dil kullanabilmesini sa\u011flayarak geli\u015ftirme s\u00fcrecini basitle\u015ftirir ve h\u0131zland\u0131r\u0131r. Bu tutarl\u0131l\u0131k, geli\u015ftiricilerin farkl\u0131 diller aras\u0131nda ge\u00e7i\u015f yapma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r ve projelerin daha verimli bir \u015fekilde y\u00f6netilmesine olanak tan\u0131r. MongoDB, Express.js, React\/Angular\/Vue.js ve Node.js&#8217;ten olu\u015fan MERN veya MEAN y\u0131\u011f\u0131n\u0131 gibi pop\u00fcler teknoloji y\u0131\u011f\u0131nlar\u0131, JavaScript&#8217;in her katmanda ne kadar etkili oldu\u011funu g\u00f6sterir. Bu geni\u015f ekosistem, s\u00fcrekli b\u00fcy\u00fcyen topluluk deste\u011fi ve zengin k\u00fct\u00fcphane havuzu, JavaScript&#8217;i sadece g\u00fcn\u00fcm\u00fcz\u00fcn de\u011fil, gelece\u011fin de anahtar programlama dillerinden biri yapmaktad\u0131r. Bu nedenlerle, modern web geli\u015ftirme d\u00fcnyas\u0131nda yer almak isteyen herkes i\u00e7in JavaScript bilgisi temel bir gerekliliktir.<\/p>\n<h2>\u0130lk 30 G\u00fcn: JavaScript Temellerini Sa\u011flam Bir \u015eekilde Olu\u015fturmak<\/h2>\n<p>JavaScript \u00f6\u011frenme yolculu\u011funuzun ilk 30 g\u00fcn\u00fc, sa\u011flam bir temel olu\u015fturmaya odaklanacakt\u0131r. Bu d\u00f6nemde, programlama mant\u0131\u011f\u0131n\u0131 anlamak, temel s\u00f6zdizimi kurallar\u0131n\u0131 \u00f6\u011frenmek ve k\u00fc\u00e7\u00fck, ba\u011f\u0131ms\u0131z kod par\u00e7ac\u0131klar\u0131yla pratik yapmak esast\u0131r. De\u011fi\u015fkenler, veri tipleri, operat\u00f6rler gibi en temel kavramlarla ba\u015flayacak, ard\u0131ndan programlar\u0131n\u0131z\u0131n ak\u0131\u015f\u0131n\u0131 kontrol etmenizi sa\u011flayan ko\u015fullu ifadeleri ve d\u00f6ng\u00fcleri \u00f6\u011freneceksiniz. Fonksiyonlar, kodunuzu daha d\u00fczenli, yeniden kullan\u0131labilir ve okunabilir hale getirmenin anahtar\u0131d\u0131r. Bu konular\u0131 iyice kavramak, karma\u015f\u0131k problemleri daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir par\u00e7alara ay\u0131rma becerisi kazanman\u0131z\u0131 sa\u011flayacakt\u0131r. Unutmay\u0131n, bu ilk a\u015fama, gelecekte in\u015fa edece\u011finiz t\u00fcm projeler i\u00e7in bir temel ta\u015f\u0131 g\u00f6revi g\u00f6r\u00fcr. Acele etmeyin, her konuyu derinlemesine anlamaya \u00e7al\u0131\u015f\u0131n ve bol bol pratik yap\u0131n. Her bir konuyu kavrad\u0131ktan sonra k\u00fc\u00e7\u00fck kod par\u00e7ac\u0131klar\u0131 yazarak veya basit al\u0131\u015ft\u0131rmalar\u0131 \u00e7\u00f6zerek \u00f6\u011frendiklerinizi peki\u015ftirmeniz hayati \u00f6nem ta\u015f\u0131r. Bu sayede, teorik bilginizi pratik uygulamalarla birle\u015ftirerek kal\u0131c\u0131 bir \u00f6\u011frenme deneyimi edineceksiniz. JavaScript&#8217;in temel mekaniklerini anlamak, ayn\u0131 zamanda di\u011fer programlama dillerine ge\u00e7i\u015f yaparken de size yard\u0131mc\u0131 olacak genel programlama prensiplerini kavraman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<p>DOM (Belge Nesne Modeli) manip\u00fclasyonu, web sayfalar\u0131yla etkile\u015fim kurman\u0131z\u0131 sa\u011flayan kritik bir konudur. Bu b\u00f6l\u00fcmde, HTML \u00f6\u011felerini nas\u0131l se\u00e7ece\u011finizi, \u00f6zelliklerini nas\u0131l de\u011fi\u015ftirece\u011finizi ve kullan\u0131c\u0131 etkile\u015fimlerine nas\u0131l yan\u0131t verece\u011finizi \u00f6\u011freneceksiniz. Bir buton t\u0131kland\u0131\u011f\u0131nda ne olaca\u011f\u0131n\u0131 belirlemek, bir form g\u00f6nderildi\u011finde verileri i\u015flemek veya bir eleman\u0131n stilini dinamik olarak de\u011fi\u015ftirmek gibi eylemler, DOM manip\u00fclasyonu ile ger\u00e7ekle\u015ftirilir. Bu beceri, statik web sayfalar\u0131n\u0131 dinamik ve etkile\u015fimli kullan\u0131c\u0131 deneyimlerine d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in vazge\u00e7ilmezdir. Dolay\u0131s\u0131yla, bu ilk 30 g\u00fcn boyunca sadece JavaScript&#8217;in dil yap\u0131s\u0131n\u0131 de\u011fil, ayn\u0131 zamanda bu dili web sayfalar\u0131na uygulamak i\u00e7in gerekli olan ara\u00e7lar\u0131 da \u00f6\u011freneceksiniz. Bu a\u015famay\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, basit ama i\u015flevsel web uygulamalar\u0131 olu\u015fturabilecek temel yeteneklere sahip olacaks\u0131n\u0131z.<\/p>\n<h3>De\u011fi\u015fkenler, Veri Tipleri ve Operat\u00f6rler: Yap\u0131 Ta\u015flar\u0131 Nelerdir?<\/h3>\n<p>JavaScript&#8217;te de\u011fi\u015fkenler, bilgiyi depolamak i\u00e7in kullan\u0131lan adland\u0131r\u0131lm\u0131\u015f kaplard\u0131r. <code>let<\/code> ve <code>const<\/code> anahtar kelimeleriyle tan\u0131mlan\u0131rlar. <code>let<\/code>, de\u011feri daha sonra de\u011fi\u015ftirilebilen de\u011fi\u015fkenler i\u00e7in kullan\u0131l\u0131rken, <code>const<\/code>, de\u011feri bir kez atand\u0131ktan sonra de\u011fi\u015ftirilemeyen (sabit) de\u011fi\u015fkenler i\u00e7indir. Veri tipleri ise depolanan bilginin t\u00fcr\u00fcn\u00fc ifade eder; bunlar aras\u0131nda say\u0131lar (numbers), metinler (strings), do\u011fru\/yanl\u0131\u015f de\u011ferleri (booleans), diziler (arrays) ve nesneler (objects) bulunur. Operat\u00f6rler ise bu de\u011fi\u015fkenler ve de\u011ferler \u00fczerinde i\u015flemler yapmam\u0131z\u0131 sa\u011flar; \u00f6rne\u011fin, aritmetik operat\u00f6rler (+, -, *, \/) matematiksel i\u015flemler i\u00e7in, kar\u015f\u0131la\u015ft\u0131rma operat\u00f6rleri (==, ===, >, <) de\u011ferleri kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in ve mant\u0131ksal operat\u00f6rler (&#038;&#038;, ||, !) ko\u015fullar\u0131 birle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Bu temel yap\u0131 ta\u015flar\u0131n\u0131 anlamak, programlama mant\u0131\u011f\u0131n\u0131 kurman\u0131n ilk ad\u0131m\u0131d\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki kod \u00f6rne\u011fi, de\u011fi\u015fken tan\u0131mlama, farkl\u0131 veri tipleri ve basit operat\u00f6r kullan\u0131mlar\u0131n\u0131 g\u00f6stermektedir:<\/p>\n<pre><code>\nlet ogrenciAdi = \"Ay\u015fe Y\u0131lmaz\"; \/\/ String veri tipi\nconst ogrenciNumarasi = 12345; \/\/ Number veri tipi\nlet aktifMi = true; \/\/ Boolean veri tipi\n\nlet yas = 20;\nlet dogumYili = 2023 - yas; \/\/ Aritmetik operat\u00f6r\n\nconsole.log(\"\u00d6\u011frenci Ad\u0131:\", ogrenciAdi);\nconsole.log(\"\u00d6\u011frenci Numaras\u0131:\", ogrenciNumarasi);\nconsole.log(\"Aktif Mi:\", aktifMi);\nconsole.log(\"Do\u011fum Y\u0131l\u0131:\", dogumYili);\n\nlet mesaj = \"Merhaba \" + ogrenciAdi + \"! Ho\u015f geldin.\"; \/\/ String birle\u015ftirme\nconsole.log(mesaj);\n\nlet esitMi = (ogrenciNumarasi === 12345); \/\/ Kar\u015f\u0131la\u015ft\u0131rma operat\u00f6r\u00fc\nconsole.log(\"\u00d6\u011frenci numaras\u0131 12345'e e\u015fit mi?\", esitMi);\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>let<\/code> ile <code>ogrenciAdi<\/code> ve <code>yas<\/code> gibi de\u011ferleri de\u011fi\u015febilecek de\u011fi\u015fkenler tan\u0131mlarken, <code>const<\/code> ile <code>ogrenciNumarasi<\/code> gibi sabit bir de\u011fer atad\u0131k. <code>typeof<\/code> operat\u00f6r\u00fcn\u00fc kullanarak bir de\u011fi\u015fkenin veri tipini kontrol edebiliriz, bu da hata ay\u0131klama ve kodunuzu daha iyi anlamak i\u00e7in olduk\u00e7a faydal\u0131d\u0131r. Ayr\u0131ca, metinleri birle\u015ftirmek i\u00e7in <code>+<\/code> operat\u00f6r\u00fcn\u00fc ve de\u011ferleri kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in <code>===<\/code> operat\u00f6r\u00fcn\u00fc kulland\u0131k. Bu operat\u00f6rler ve veri tipleri, JavaScript'in temelini olu\u015fturur ve g\u00fcnl\u00fck kod yazma pratiklerinizde s\u00fcrekli olarak kar\u015f\u0131n\u0131za \u00e7\u0131kacakt\u0131r.<\/p>\n<h3>Ak\u0131\u015f Kontrol\u00fc ve D\u00f6ng\u00fcler: Kodunuz Nas\u0131l Karar Al\u0131r ve Tekrarlar?<\/h3>\n<p>Ak\u0131\u015f kontrol\u00fc, programlar\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flar. <code>if<\/code>, <code>else if<\/code> ve <code>else<\/code> ifadeleri, bu kararlar\u0131 alman\u0131n temel yoludur. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n ya\u015f\u0131n\u0131 kontrol edip belirli bir eylemi ger\u00e7ekle\u015ftirmek isteyebilirsiniz. D\u00f6ng\u00fcler ise bir kod blo\u011funu belirli bir ko\u015ful do\u011fru oldu\u011fu s\u00fcrece veya belirli bir say\u0131da tekrarlamak i\u00e7in kullan\u0131l\u0131r. <code>for<\/code> d\u00f6ng\u00fcs\u00fc, belirli bir aral\u0131ktaki say\u0131lar \u00fczerinde i\u015flem yapmak veya bir dizideki her \u00f6\u011feyi gezmek i\u00e7in idealdir. <code>while<\/code> d\u00f6ng\u00fcs\u00fc ise bir ko\u015ful do\u011fru oldu\u011fu s\u00fcrece \u00e7al\u0131\u015fmaya devam eder. Bu yap\u0131lar, programlar\u0131n\u0131za zeka katman\u0131n ve tekrarlayan g\u00f6revleri otomatikle\u015ftirmenin anahtar\u0131d\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131da basit bir <code>if\/else<\/code> yap\u0131s\u0131 ve bir <code>for<\/code> d\u00f6ng\u00fcs\u00fc \u00f6rne\u011fi bulunmaktad\u0131r:<\/p>\n<pre><code>\nlet havaDurumu = \"ya\u011fmurlu\";\n\nif (havaDurumu === \"g\u00fcne\u015fli\") {\n  console.log(\"Hava g\u00fcne\u015fli, d\u0131\u015far\u0131 \u00e7\u0131kabilirsin!\");\n} else if (havaDurumu === \"bulutlu\") {\n  console.log(\"Hava bulutlu, \u015femsiyeni almay\u0131 unutma.\");\n} else {\n  console.log(\"Hava ya\u011fmurlu, evde kal\u0131p kod yazmak i\u00e7in harika bir g\u00fcn!\");\n}\n\nconsole.log(\"\\n1'den 5'e kadar say\u0131lar:\");\nfor (let i = 1; i <= 5; i++) {\n  console.log(i);\n}\n\nconsole.log(\"\\n\u00c7ift say\u0131lar:\");\nlet sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nfor (let i = 0; i < sayilar.length; i++) {\n  if (sayilar[i] % 2 === 0) {\n    console.log(sayilar[i]);\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod par\u00e7as\u0131, <code>if-else if-else<\/code> yap\u0131s\u0131 ile farkl\u0131 hava durumu senaryolar\u0131na g\u00f6re farkl\u0131 mesajlar g\u00f6steriyor. Ayr\u0131ca, <code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fcn nas\u0131l kullan\u0131labilece\u011fini iki farkl\u0131 senaryoda g\u00f6sterdik: belirli bir aral\u0131kta saymak ve bir dizideki \u00f6\u011feler \u00fczerinde ko\u015fullu i\u015flem yapmak. \u00d6zellikle ikinci <code>for<\/code> d\u00f6ng\u00fcs\u00fc \u00f6rne\u011finde, bir dizideki elemanlar\u0131 kontrol edip sadece \u00e7ift say\u0131lar\u0131 ekrana yazd\u0131rarak ak\u0131\u015f kontrol\u00fc ve d\u00f6ng\u00fclerin birlikte nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 sergilemi\u015f olduk. Bu mekanizmalar, karma\u015f\u0131k mant\u0131klar\u0131 uygulamak ve veri setleri \u00fczerinde i\u015flem yapmak i\u00e7in vazge\u00e7ilmez ara\u00e7lard\u0131r. Bu konular\u0131 iyi kavramak, daha ileri seviye JavaScript konular\u0131na ge\u00e7i\u015f yaparken size b\u00fcy\u00fck avantaj sa\u011flayacakt\u0131r.<\/p>\n<h3>Fonksiyonlar: Kodunuzu Mod\u00fcler Hale Getirmenin S\u0131rr\u0131<\/h3>\n<p>Fonksiyonlar, belirli bir g\u00f6revi yerine getiren kod bloklar\u0131d\u0131r. Kodunuzu b\u00f6l\u00fcmlere ay\u0131rarak daha d\u00fczenli, okunabilir ve tekrar kullan\u0131labilir hale getirirler. Bir fonksiyon tan\u0131mlad\u0131\u011f\u0131n\u0131zda, o kodu birden fazla yerde \u00e7a\u011f\u0131rmak i\u00e7in kullanabilirsiniz, bu da ayn\u0131 kodu tekrar tekrar yazma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r. JavaScript'te fonksiyonlar, ba\u011f\u0131ms\u0131z de\u011fi\u015fkenler alabilir ve bir de\u011fer d\u00f6nd\u00fcrebilirler. \u0130simlendirilmi\u015f fonksiyonlar, anonim fonksiyonlar ve ES6 ile gelen ok fonksiyonlar\u0131 (arrow functions) gibi farkl\u0131 tan\u0131mlama yollar\u0131 vard\u0131r. Ok fonksiyonlar\u0131 \u00f6zellikle k\u0131sa ve tek sat\u0131rl\u0131k i\u015flemler i\u00e7in modern ve concis (\u00f6zl\u00fc) bir yol sunar. Fonksiyonlar\u0131 anlamak, yaz\u0131l\u0131m geli\u015ftirmenin temel prensiplerinden biri olan mod\u00fclerlik ve DRY (Don't Repeat Yourself - Kendini Tekrar Etme) prensibini uygulaman\u0131z\u0131 sa\u011flar.<\/p>\n<p>A\u015fa\u011f\u0131da fonksiyon tan\u0131mlama ve kullanma \u00f6rnekleri verilmi\u015ftir:<\/p>\n<pre><code>\n\/\/ Geleneksel fonksiyon tan\u0131m\u0131\nfunction selamlama(isim) {\n  return \"Merhaba, \" + isim + \"!\";\n}\n\nconsole.log(selamlama(\"Ali\")); \/\/ \u00c7\u0131kt\u0131: Merhaba, Ali!\n\n\/\/ Ok fonksiyonu (Arrow Function) tan\u0131m\u0131\nconst kareAl = (sayi) => {\n  return sayi * sayi;\n};\n\nconsole.log(kareAl(5)); \/\/ \u00c7\u0131kt\u0131: 25\n\n\/\/ Tek sat\u0131rl\u0131k ok fonksiyonu (implied return)\nconst toplam = (a, b) => a + b;\n\nconsole.log(toplam(10, 20)); \/\/ \u00c7\u0131kt\u0131: 30\n\n\/\/ Parametresiz fonksiyon\nfunction bugununTarihi() {\n  const tarih = new Date();\n  return tarih.toLocaleDateString();\n}\n\nconsole.log(\"Bug\u00fcn\u00fcn tarihi:\", bugununTarihi());\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rneklerde, <code>selamlama<\/code> fonksiyonu bir isim parametresi al\u0131p bir mesaj d\u00f6nd\u00fcr\u00fcrken, <code>kareAl<\/code> fonksiyonu bir say\u0131n\u0131n karesini hesaplar. <code>toplam<\/code> fonksiyonu, tek sat\u0131rl\u0131k ok fonksiyonu olmas\u0131n\u0131n getirdi\u011fi bir kolayl\u0131kla, <code>return<\/code> anahtar kelimesini kullanmadan do\u011frudan de\u011feri d\u00f6nd\u00fcr\u00fcr. Son olarak, <code>bugununTarihi<\/code> fonksiyonu parametre almadan g\u00fcncel tarihi d\u00f6nd\u00fcr\u00fcr. Fonksiyonlar, karma\u015f\u0131k programlar\u0131 daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir ve yeniden kullan\u0131labilir par\u00e7alara ay\u0131rarak kod kalitesini art\u0131r\u0131r ve b\u00fcy\u00fck projelerde geli\u015ftirme s\u00fcrecini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r. Bu prensipleri erken a\u015famada \u00f6\u011frenmek, daha s\u00fcrd\u00fcr\u00fclebilir ve hatas\u0131z kod yazman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>DOM Manip\u00fclasyonu: Web Sayfalar\u0131n\u0131 Canland\u0131rma Sanat\u0131<\/h3>\n<p>DOM (Document Object Model) manip\u00fclasyonu, JavaScript'in en g\u00fc\u00e7l\u00fc y\u00f6nlerinden biridir. Bu, bir web sayfas\u0131n\u0131n HTML ve XML belgelerinin programatik olarak de\u011fi\u015ftirilebilmesini sa\u011flayan bir programlama aray\u00fcz\u00fcd\u00fcr. K\u0131sacas\u0131, JavaScript kodunuz arac\u0131l\u0131\u011f\u0131yla HTML \u00f6\u011felerini se\u00e7ebilir, i\u00e7eriklerini de\u011fi\u015ftirebilir, stil tan\u0131mlamalar\u0131n\u0131 g\u00fcncelleyebilir, hatta yeni \u00f6\u011feler ekleyebilir veya mevcut \u00f6\u011feleri kald\u0131rabilirsiniz. Bir kullan\u0131c\u0131n\u0131n bir butona t\u0131klamas\u0131yla bir metnin g\u00f6r\u00fcnmesini veya bir resmin de\u011fi\u015fmesini sa\u011flamak, bir form g\u00f6nderildi\u011finde verileri do\u011frulamak veya dinamik i\u00e7erik y\u00fcklemek gibi t\u00fcm interaktif \u00f6zellikler DOM manip\u00fclasyonu ile ger\u00e7ekle\u015ftirilir. Bu beceri, statik HTML sayfalar\u0131n\u0131 etkile\u015fimli ve dinamik web uygulamalar\u0131na d\u00f6n\u00fc\u015ft\u00fcrmenin temelidir.<\/p>\n<p>A\u015fa\u011f\u0131da basit bir DOM manip\u00fclasyonu \u00f6rne\u011fi bulunmaktad\u0131r:<\/p>\n<pre><code>\n<!-- HTML Yap\u0131s\u0131 -->\n<h2 id=\"baslik\">Merhaba D\u00fcnya!<\/h2>\n<button id=\"degistirBtn\">Ba\u015fl\u0131\u011f\u0131 De\u011fi\u015ftir<\/button>\n<div id=\"icerik\">\n  <p>Bu bir paragraf i\u00e7eri\u011fidir.<\/p>\n<\/div>\n\n<script>\n  \/\/ 1. Bir HTML \u00f6\u011fesini se\u00e7me\n  const baslikElementi = document.getElementById(\"baslik\");\n  const dugmeElementi = document.getElementById(\"degistirBtn\");\n  const icerikDiv = document.querySelector(\"#icerik\"); \/\/ QuerySelector ile ID se\u00e7imi\n\n  \/\/ 2. Metin i\u00e7eri\u011fini de\u011fi\u015ftirme\n  baslikElementi.textContent = \"JavaScript ile De\u011fi\u015ftirildi!\";\n\n  \/\/ 3. Stil \u00f6zelliklerini de\u011fi\u015ftirme\n  baslikElementi.style.color = \"blue\";\n  baslikElementi.style.fontSize = \"30px\";\n\n  \/\/ 4. Yeni bir \u00f6\u011fe olu\u015fturma ve ekleme\n  const yeniParagraf = document.createElement(\"p\");\n  yeniParagraf.textContent = \"Dinamik olarak eklenen yeni paragraf.\";\n  icerikDiv.appendChild(yeniParagraf);\n\n  \/\/ 5. Bir olaya (event) yan\u0131t verme\n  dugmeElementi.addEventListener(\"click\", function() {\n    alert(\"Butona t\u0131kland\u0131!\");\n    \/\/ Butona her t\u0131kland\u0131\u011f\u0131nda ba\u015fl\u0131\u011f\u0131n rengini rastgele de\u011fi\u015ftir\n    const randomColor = '#' + Math.floor(Math.random()*16777215).toString(16);\n    baslikElementi.style.color = randomColor;\n  });\n<\/script>\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>document.getElementById<\/code> ve <code>document.querySelector<\/code> kullanarak HTML \u00f6\u011felerini se\u00e7tik. <code>textContent<\/code> \u00f6zelli\u011fini kullanarak ba\u015fl\u0131\u011f\u0131n metnini de\u011fi\u015ftirdik ve <code>style<\/code> \u00f6zelli\u011fi \u00fczerinden rengini ve yaz\u0131 boyutunu g\u00fcncelledik. Ayr\u0131ca, <code>document.createElement<\/code> ile yeni bir paragraf olu\u015fturup <code>appendChild<\/code> ile mevcut bir <code>div<\/code> i\u00e7ine ekledik. En \u00f6nemlisi, <code>addEventListener<\/code> ile bir butona t\u0131klama olay\u0131n\u0131 dinleyerek, kullan\u0131c\u0131 etkile\u015fimi an\u0131nda bir mesaj g\u00f6sterdik ve ba\u015fl\u0131\u011f\u0131n rengini dinamik olarak de\u011fi\u015ftirdik. Bu temel DOM manip\u00fclasyonu teknikleri, kullan\u0131c\u0131lar\u0131n bir web sayfas\u0131nda yapt\u0131\u011f\u0131 eylemlere yan\u0131t veren dinamik ve etkile\u015fimli deneyimler olu\u015fturman\u0131n ilk ad\u0131mlar\u0131d\u0131r. Bu konular\u0131 iyi \u00f6\u011frenmek, web geli\u015ftiricisi olarak yeteneklerinizi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<h2>Sonraki 30 G\u00fcn: Orta Seviye JavaScript ve Ger\u00e7ek D\u00fcnya Uygulamalar\u0131<\/h2>\n<p>\u0130lk 30 g\u00fcn\u00fcn ard\u0131ndan, JavaScript temel prensiplerini ve DOM manip\u00fclasyonunu yeterince kavram\u0131\u015f olmal\u0131s\u0131n\u0131z. \u015eimdi s\u0131ra, bilgilerinizi bir \u00fcst seviyeye ta\u015f\u0131maya ve daha karma\u015f\u0131k, ger\u00e7ek d\u00fcnya senaryolar\u0131na haz\u0131rlamaya geldi. Bu ikinci 30 g\u00fcnl\u00fck s\u00fcre\u00e7te, asenkron JavaScript kavramlar\u0131na dalacak, modern ES6+ \u00f6zelliklerini ke\u015ffedecek ve web API'lar\u0131 ile nas\u0131l etkile\u015fim kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011freneceksiniz. Bu konular, \u00f6zellikle harici kaynaklardan veri \u00e7eken veya uzun s\u00fcren i\u015flemleri y\u00f6neten modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in hayati \u00f6neme sahiptir. Asenkron programlama, kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn donmadan arka planda i\u015flem yapmas\u0131na olanak tan\u0131rken, ES6+ \u00f6zellikleri kodunuzu daha temiz, daha k\u0131sa ve daha okunabilir hale getirecektir. Bu beceriler, sizi ba\u015flang\u0131\u00e7 seviyesinden orta seviyeye ta\u015f\u0131yacak ve daha geli\u015fmi\u015f projeler \u00fczerinde \u00e7al\u0131\u015fman\u0131za imkan tan\u0131yacakt\u0131r.<\/p>\n<p>Bu a\u015famada ayr\u0131ca, edindi\u011finiz bilgileri peki\u015ftirmek i\u00e7in k\u00fc\u00e7\u00fck bir vaka analizi \u00fczerinde \u00e7al\u0131\u015facaks\u0131n\u0131z: basit bir To-Do List (Yap\u0131lacaklar Listesi) uygulamas\u0131. Bu proje, DOM manip\u00fclasyonunu, olay dinleyicilerini, veri depolamay\u0131 (\u00f6rne\u011fin localStorage kullanarak) ve hatta belki de baz\u0131 asenkron i\u015flemleri bir araya getirerek \u00f6\u011frendi\u011finiz t\u00fcm kavramlar\u0131 pratik bir senaryoda uygulaman\u0131z\u0131 sa\u011flayacakt\u0131r. Ger\u00e7ek d\u00fcnya projeleri \u00fczerinde \u00e7al\u0131\u015fmak, teorik bilginizi pekinle\u015ftirmek ve kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z sorunlara \u00e7\u00f6z\u00fcm bulma yetene\u011finizi geli\u015ftirmek i\u00e7in en iyi yoldur. Ayr\u0131ca, bu s\u00fcre\u00e7te hata ay\u0131klama (debugging) becerilerinizi de geli\u015ftirecek ve kodunuzdaki problemleri nas\u0131l tespit edip \u00e7\u00f6zece\u011finizi \u00f6\u011freneceksiniz. Bu son 30 g\u00fcn\u00fcn sonunda, sadece bir JavaScript geli\u015ftiricisi olarak yeteneklerinizi de\u011fil, ayn\u0131 zamanda sorun \u00e7\u00f6zme ve proje geli\u015ftirme konusundaki \u00f6zg\u00fcveninizi de art\u0131rm\u0131\u015f olacaks\u0131n\u0131z.<\/p>\n<h3>Asenkron JavaScript: Gelece\u011fi Beklemek Zorunda m\u0131y\u0131z?<\/h3>\n<p>JavaScript, do\u011fas\u0131 gere\u011fi tek i\u015f par\u00e7ac\u0131kl\u0131 (single-threaded) bir dildir, yani ayn\u0131 anda sadece tek bir g\u00f6revi y\u00fcr\u00fctebilir. Ancak modern web uygulamalar\u0131, sunucudan veri \u00e7ekme, dosya y\u00fckleme veya uzun s\u00fcren hesaplamalar gibi bir\u00e7ok zaman al\u0131c\u0131 i\u015flemi ger\u00e7ekle\u015ftirmelidir. Bu i\u015flemler senkron olarak y\u00fcr\u00fct\u00fclseydi, kullan\u0131c\u0131 aray\u00fcz\u00fc bu i\u015flemler bitene kadar donar ve yan\u0131t vermez hale gelirdi. \u0130\u015fte burada asenkron JavaScript devreye girer. Asenkron programlama, uzun s\u00fcren i\u015flemleri arka planda y\u00fcr\u00fct\u00fcrken ana i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131n di\u011fer g\u00f6revlere devam etmesini sa\u011flar. Bu sayede kullan\u0131c\u0131 deneyimi kesintisiz ve ak\u0131c\u0131 kal\u0131r. Callback fonksiyonlar\u0131, Promise'ler ve <code>async\/await<\/code> anahtar kelimeleri, JavaScript'te asenkron i\u015flemleri y\u00f6netmek i\u00e7in kullan\u0131lan temel mekanizmalard\u0131r.<\/p>\n<p>Callback fonksiyonlar\u0131, bir i\u015flemin tamamlanmas\u0131ndan sonra \u00e7a\u011fr\u0131lan fonksiyonlard\u0131r. Promise'ler ise asenkron bir i\u015flemin nihai sonucunu (ba\u015far\u0131l\u0131 tamamland\u0131 veya ba\u015far\u0131s\u0131z oldu) temsil eden nesnelerdir ve daha karma\u015f\u0131k asenkron ak\u0131\u015flar\u0131 y\u00f6netmek i\u00e7in callback'lerden daha temiz bir yol sunarlar. ES2017 ile tan\u0131t\u0131lan <code>async\/await<\/code> ise Promise'lerin \u00fczerine in\u015fa edilmi\u015f s\u00f6zdizimsel bir \u015fekerdir ve asenkron kodu senkron kod gibi daha okunabilir bir \u015fekilde yazmay\u0131 sa\u011flar, \"callback hell\" durumunu ortadan kald\u0131r\u0131r.<\/p>\n<pre><code>\n\/\/ Callback fonksiyonu \u00f6rne\u011fi\nfunction veriCekCallback(url, callback) {\n  setTimeout(() => { \/\/ Sunucudan veri \u00e7ekme s\u00fcresi sim\u00fclasyonu\n    const veri = <code>URL&#039;den gelen veri: ${url}<\/code>;\n    callback(veri);\n  }, 2000);\n}\n\nconsole.log(\"Veri \u00e7ekiliyor (callback)...\");\nveriCekCallback(\"https:\/\/api.example.com\/data\", function(sonuc) {\n  console.log(\"Callback ile gelen sonu\u00e7:\", sonuc);\n});\n\n\/\/ Promise \u00f6rne\u011fi\nfunction veriCekPromise(url) {\n  return new Promise((resolve, reject) => {\n    setTimeout(() => {\n      if (url.startsWith(\"https:\/\/\")) {\n        const veri = <code>URL&#039;den gelen veri (Promise): ${url}<\/code>;\n        resolve(veri); \/\/ Ba\u015far\u0131l\u0131 olursa\n      } else {\n        reject(\"Ge\u00e7ersiz URL format\u0131.\"); \/\/ Ba\u015far\u0131s\u0131z olursa\n      }\n    }, 1500);\n  });\n}\n\nconsole.log(\"Veri \u00e7ekiliyor (Promise)...\");\nveriCekPromise(\"https:\/\/api.example.com\/data2\")\n  .then(sonuc => console.log(\"Promise ile gelen sonu\u00e7:\", sonuc))\n  .catch(hata => console.error(\"Promise hatas\u0131:\", hata));\n\nveriCekPromise(\"http:\/\/invalid.com\") \/\/ Hata \u00f6rne\u011fi\n  .then(sonuc => console.log(\"Promise ile gelen sonu\u00e7:\", sonuc))\n  .catch(hata => console.error(\"Promise hatas\u0131 (ge\u00e7ersiz URL):\", hata));\n\n\/\/ Async\/Await \u00f6rne\u011fi\nasync function veriCekAsync(url) {\n  console.log(\"Veri \u00e7ekiliyor (Async\/Await)...\");\n  try {\n    const response = await fetch(url); \/\/ Ger\u00e7ek bir API \u00e7a\u011fr\u0131s\u0131 sim\u00fclasyonu\n    const data = await response.json();\n    console.log(\"Async\/Await ile gelen sonu\u00e7:\", data);\n  } catch (error) {\n    console.error(\"Async\/Await hatas\u0131:\", error);\n  }\n}\n\n\/\/ veriCekAsync(\"https:\/\/jsonplaceholder.typicode.com\/todos\/1\"); \/\/ Ger\u00e7ek API ile denemek i\u00e7in\n\/\/ setTimeout(() => veriCekAsync(\"https:\/\/jsonplaceholder.typicode.com\/todos\/1\"), 2500); \/\/ Ger\u00e7ek bir API \u00e7a\u011fr\u0131s\u0131\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code>veriCekCallback<\/code> fonksiyonu asenkron bir i\u015flemi callback ile nas\u0131l y\u00f6netti\u011fimizi g\u00f6steriyor. Daha sonra, <code>veriCekPromise<\/code> fonksiyonu, bir Promise'in nas\u0131l olu\u015fturuldu\u011funu ve <code>then().catch()<\/code> zinciriyle nas\u0131l i\u015flendi\u011fini g\u00f6sterir. Son olarak, <code>veriCekAsync<\/code> fonksiyonu, <code>async\/await<\/code> kullanarak <code>fetch<\/code> gibi bir Promise tabanl\u0131 API'yi senkron bir kod gibi nas\u0131l daha temiz okuyabilece\u011fimizi sergiler (burada <code>fetch<\/code> ger\u00e7ek bir \u00e7a\u011fr\u0131 yapar, ancak taray\u0131c\u0131da \u00e7al\u0131\u015f\u0131r). Asenkron programlama, \u00f6zellikle a\u011f istekleri gibi uzun s\u00fcren i\u015flemlerde kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn donmas\u0131n\u0131 engelleyerek modern web uygulamalar\u0131n\u0131n temelini olu\u015fturur. Bu kavramlar\u0131 iyi anlamak, y\u00fcksek performansl\u0131 ve ak\u0131c\u0131 kullan\u0131c\u0131 deneyimleri sunan uygulamalar geli\u015ftirmek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>ES6+ \u00d6zellikleri: Modern JavaScript Geli\u015ftirmenin Temel Ta\u015flar\u0131<\/h3>\n<p>ECMAScript 2015 (ES6) ile ba\u015flayan ve her y\u0131l g\u00fcncellenen yeni \u00f6zellikler, JavaScript'i daha g\u00fc\u00e7l\u00fc, daha okunabilir ve daha esnek bir dil haline getirdi. Bu modern \u00f6zellikler, geli\u015ftiricilerin daha temiz ve verimli kod yazmas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, <code>let<\/code> ve <code>const<\/code> ile de\u011fi\u015fken bildirimi, geleneksel <code>var<\/code>'\u0131n baz\u0131 sorunlar\u0131n\u0131 \u00e7\u00f6zerek kapsam (scope) y\u00f6netimini iyile\u015ftirdi. Ok fonksiyonlar\u0131 (arrow functions), \u00f6zellikle callback'ler ve k\u0131sa fonksiyon tan\u0131mlamalar\u0131 i\u00e7in daha k\u0131sa ve daha net bir s\u00f6zdizimi sundu. \u015eablon de\u011fi\u015fmezleri (template literals), string birle\u015ftirmeyi daha kolay ve okunabilir hale getirdi. S\u0131n\u0131flar (classes), nesne y\u00f6nelimli programlama (OOP) kavramlar\u0131n\u0131 JavaScript'e daha tan\u0131d\u0131k bir s\u00f6zdizimiyle getirirken, miras (inheritance) ve kal\u0131t\u0131m mekanizmalar\u0131n\u0131 da kolayla\u015ft\u0131rd\u0131. Mod\u00fcller (modules), kodunuzu k\u00fc\u00e7\u00fck, y\u00f6netilebilir dosyalara b\u00f6lmenize ve bunlar\u0131 ba\u015fka dosyalarda i\u00e7e aktarman\u0131za olanak tan\u0131yarak b\u00fcy\u00fck projelerde kod organizasyonunu \u00f6nemli \u00f6l\u00e7\u00fcde geli\u015ftirdi. Y\u0131k\u0131c\u0131 atama (destructuring assignment), nesnelerden veya dizilerden belirli de\u011ferleri ay\u0131klamay\u0131 basitle\u015ftirdi. Yayma operat\u00f6r\u00fc (spread operator) ve geri kalan parametreler (rest parameters) ise dizilerle ve fonksiyon parametreleriyle \u00e7al\u0131\u015fmay\u0131 \u00e7ok daha esnek hale getirdi.<\/p>\n<p>Bu \u00f6zelliklerin her biri, JavaScript geli\u015ftiricilerinin g\u00fcnl\u00fck i\u015f ak\u0131\u015f\u0131n\u0131 iyile\u015ftiren \u00f6nemli geli\u015fmeler sunar. ES6+ ile gelen yenilikler sayesinde, daha az kodla daha fazlas\u0131n\u0131 yapabilir, daha az hata yapabilir ve projelerinizi daha s\u00fcrd\u00fcr\u00fclebilir bir \u015fekilde y\u00f6netebilirsiniz. Bu \u00f6zellikleri \u00f6\u011frenmek, modern JavaScript ekosisteminde rekabet\u00e7i kalmak ve g\u00fcncel k\u00fct\u00fcphanelerle\/framework'lerle sorunsuz \u00e7al\u0131\u015fmak i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<pre><code>\n\/\/ Let & Const\nlet sayac = 0;\nconst PI = 3.14159;\n\/\/ PI = 3.14; \/\/ Hata verir\n\n\/\/ Ok Fonksiyonlar\u0131 (Arrow Functions)\nconst merhabaDe = (isim) => <code>Merhaba, ${isim}!<\/code>; \/\/ Template Literal ile\nconsole.log(merhabaDe(\"D\u00fcnya\"));\n\n\/\/ \u015eablon De\u011fi\u015fmezleri (Template Literals)\nconst urun = { ad: \"Klavye\", fiyat: 150 };\nconst mesaj = <code>\u00dcr\u00fcn: ${urun.ad}, Fiyat: ${urun.fiyat} TL<\/code>;\nconsole.log(mesaj);\n\n\/\/ Y\u0131k\u0131c\u0131 Atama (Destructuring Assignment)\nconst kullanici = { id: 1, ad: \"Mehmet\", email: \"mehmet@example.com\" };\nconst { ad, email } = kullanici;\nconsole.log(<code>Kullan\u0131c\u0131 Ad\u0131: ${ad}, E-posta: ${email}<\/code>);\n\nconst sayilar = [10, 20, 30, 40];\nconst [ilk, ikinci, ...kalanlar] = sayilar; \/\/ Rest operat\u00f6r\u00fc\nconsole.log(<code>\u0130lk: ${ilk}, \u0130kinci: ${ikinci}, Kalanlar: ${kalanlar}<\/code>);\n\n\/\/ Yayma Operat\u00f6r\u00fc (Spread Operator)\nconst arr1 = [1, 2];\nconst arr2 = [3, 4];\nconst birlesikDizi = [...arr1, ...arr2, 5];\nconsole.log(birlesikDizi); \/\/ \u00c7\u0131kt\u0131: [1, 2, 3, 4, 5]\n\nconst ayarlar = { tema: \"dark\", dil: \"tr\" };\nconst yeniAyarlar = { ...ayarlar, bildirimler: true }; \/\/ Mevcut nesneyi yayma\nconsole.log(yeniAyarlar); \/\/ \u00c7\u0131kt\u0131: { tema: 'dark', dil: 'tr', bildirimler: true }\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod \u00f6rnekleri, <code>let<\/code> ve <code>const<\/code> ile de\u011fi\u015fken tan\u0131mlamadan, ok fonksiyonlar\u0131na, \u015fablon de\u011fi\u015fmezlerine ve y\u0131k\u0131c\u0131 atama ile yayma operat\u00f6r\u00fcne kadar bir\u00e7ok modern ES6+ \u00f6zelli\u011fini g\u00f6stermektedir. \u00d6zellikle y\u0131k\u0131c\u0131 atama, nesnelerden veya dizilerden belirli de\u011ferleri ay\u0131klarken kodun okunabilirli\u011fini art\u0131r\u0131r. Yayma operat\u00f6r\u00fc ise dizileri birle\u015ftirme veya nesneleri kopyalama ve g\u00fcncelleme gibi i\u015flemleri \u00e7ok daha zarif bir \u015fekilde yapman\u0131z\u0131 sa\u011flar. Bu \u00f6zellikler, JavaScript geli\u015ftirme s\u00fcrecini \u00f6nemli \u00f6l\u00e7\u00fcde modernle\u015ftiren ve kolayla\u015ft\u0131ran temel ara\u00e7lard\u0131r. Bu \u00f6zelliklere hakim olmak, g\u00fcncel JavaScript projelerinde \u00e7al\u0131\u015fabilme yetene\u011finizi do\u011frudan etkileyecektir.<\/p>\n<h3>API'larla \u00c7al\u0131\u015fmak: Veri Ak\u0131\u015f\u0131n\u0131 Nas\u0131l Y\u00f6netiriz?<\/h3>\n<p>Modern web uygulamalar\u0131n\u0131n \u00e7o\u011fu, dinamik i\u00e7erik sa\u011flamak i\u00e7in harici API'larla (Application Programming Interface - Uygulama Programlama Aray\u00fcz\u00fc) etkile\u015fime girer. API'lar, uygulamalar\u0131n birbirleriyle ileti\u015fim kurmas\u0131n\u0131 sa\u011flayan kurallar ve protokoller b\u00fct\u00fcn\u00fcd\u00fcr. Bir hava durumu uygulamas\u0131n\u0131n g\u00fcncel hava durumu verilerini \u00e7ekmesi, bir e-ticaret sitesinin \u00fcr\u00fcn kataloglar\u0131n\u0131 g\u00fcncellemesi veya bir sosyal medya uygulamas\u0131n\u0131n kullan\u0131c\u0131 g\u00f6nderilerini getirmesi gibi senaryolar\u0131n hepsi API \u00e7a\u011fr\u0131lar\u0131 arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. JavaScript'te, bu API \u00e7a\u011fr\u0131lar\u0131n\u0131 yapmak i\u00e7in genellikle <code>fetch<\/code> API's\u0131 veya eski y\u00f6ntemlerden <code>XMLHttpRequest<\/code> kullan\u0131l\u0131r. <code>fetch<\/code> API's\u0131, Promise tabanl\u0131 yap\u0131s\u0131yla asenkron veri al\u0131m\u0131n\u0131 daha modern ve anla\u015f\u0131l\u0131r bir \u015fekilde ele al\u0131r.<\/p>\n<p>API'larla \u00e7al\u0131\u015f\u0131rken dikkat edilmesi gereken baz\u0131 \u00f6nemli noktalar vard\u0131r: \u0130stek metotlar\u0131 (GET, POST, PUT, DELETE), HTTP durum kodlar\u0131 (200 OK, 404 Not Found, 500 Internal Server Error), JSON veri format\u0131 ve asenkron i\u015flemlerin y\u00f6netimi. Veri ak\u0131\u015f\u0131n\u0131 do\u011fru bir \u015fekilde y\u00f6netmek, uygulaman\u0131z\u0131n g\u00fcvenilirli\u011fini ve performans\u0131n\u0131 do\u011frudan etkiler. Ba\u015far\u0131l\u0131 bir API entegrasyonu, uygulaman\u0131z\u0131n canl\u0131, g\u00fcncel ve zengin i\u00e7erik sunmas\u0131na olanak tan\u0131r.<\/p>\n<pre><code>\n\/\/ Fetch API ile veri \u00e7ekme \u00f6rne\u011fi\nasync function kullaniciVerisiGetir() {\n  const url = \"https:\/\/jsonplaceholder.typicode.com\/users\/1\"; \/\/ \u00d6rnek bir kamu API's\u0131\n  \n  try {\n    const response = await fetch(url); \/\/ GET iste\u011fi\n    \n    if (!response.ok) { \/\/ HTTP yan\u0131t\u0131n\u0131n ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol et\n      throw new Error(<code>HTTP Hata! Durum: ${response.status}<\/code>);\n    }\n    \n    const data = await response.json(); \/\/ Yan\u0131t\u0131 JSON format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\n    console.log(\"Kullan\u0131c\u0131 Verisi:\", data);\n    \n    \/\/ Veriyi DOM'a ekleme \u00f6rne\u011fi\n    const kullaniciAdiElementi = document.createElement(\"p\");\n    kullaniciAdiElementi.textContent = <code>Kullan\u0131c\u0131 Ad\u0131: ${data.name}<\/code>;\n    document.body.appendChild(kullaniciAdiElementi);\n\n  } catch (error) {\n    console.error(\"Veri \u00e7ekme s\u0131ras\u0131nda hata olu\u015ftu:\", error);\n  }\n}\n\n\/\/ Bir butona t\u0131klama olay\u0131 ile veriyi getir\nconst getDataBtn = document.createElement(\"button\");\ngetDataBtn.textContent = \"Kullan\u0131c\u0131 Verisini Getir\";\ndocument.body.appendChild(getDataBtn);\n\ngetDataBtn.addEventListener(\"click\", kullaniciVerisiGetir);\n\n\n\/\/ POST iste\u011fi \u00f6rne\u011fi (yeni bir kaynak olu\u015fturma)\nasync function yeniGonderiOlustur() {\n  const postData = {\n    title: 'JavaScript \u00d6\u011freniyorum',\n    body: 'Bu makale sayesinde \u00e7ok \u015fey \u00f6\u011frendim!',\n    userId: 1,\n  };\n\n  try {\n    const response = await fetch('https:\/\/jsonplaceholder.typicode.com\/posts', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application\/json',\n      },\n      body: JSON.stringify(postData), \/\/ JavaScript nesnesini JSON string'ine d\u00f6n\u00fc\u015ft\u00fcr\n    });\n\n    if (!response.ok) {\n      throw new Error(<code>HTTP Hata! Durum: ${response.status}<\/code>);\n    }\n\n    const createdPost = await response.json();\n    console.log(\"Olu\u015fturulan G\u00f6nderi:\", createdPost);\n\n  } catch (error) {\n    console.error(\"G\u00f6nderi olu\u015fturulurken hata olu\u015ftu:\", error);\n  }\n}\n\n\/\/ Sayfa y\u00fcklendi\u011finde otomatik olarak kullan\u0131c\u0131 verisini getir\n\/\/ kullaniciVerisiGetir(); \n\/\/ yeniGonderiOlustur(); \/\/ Denemek i\u00e7in yorum sat\u0131r\u0131n\u0131 kald\u0131rabilirsiniz\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnek, <code>fetch<\/code> API's\u0131n\u0131 kullanarak bir d\u0131\u015f API'dan nas\u0131l veri \u00e7ekildi\u011fini (GET iste\u011fi) ve DOM'a eklendi\u011fini g\u00f6stermektedir. <code>async\/await<\/code> yap\u0131s\u0131 sayesinde kod daha okunabilir hale gelmi\u015ftir. Ayr\u0131ca, <code>yeniGonderiOlustur<\/code> fonksiyonu ile bir POST iste\u011finin nas\u0131l yap\u0131ld\u0131\u011f\u0131, JSON veri format\u0131n\u0131n nas\u0131l kullan\u0131ld\u0131\u011f\u0131 ve <code>Content-Type<\/code> ba\u015fl\u0131\u011f\u0131n\u0131n \u00f6nemini de g\u00f6sterdik. Hata y\u00f6netimi i\u00e7in <code>try...catch<\/code> blo\u011fu kullan\u0131lmas\u0131, uygulamalar\u0131n daha kararl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. API'larla etkili bir \u015fekilde \u00e7al\u0131\u015fmak, modern web geli\u015ftiricisinin temel becerilerinden biridir ve dinamik, veri odakl\u0131 uygulamalar olu\u015fturman\u0131n kap\u0131lar\u0131n\u0131 a\u00e7ar.<\/p>\n<h2>Performans ve Optimizasyon: Daha H\u0131zl\u0131 ve Verimli Kod Yazmak \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h2>\n<p>Bir web uygulamas\u0131n\u0131n i\u015flevselli\u011fi ne kadar iyi olursa olsun, yava\u015f ve verimsiz \u00e7al\u0131\u015ft\u0131\u011f\u0131nda kullan\u0131c\u0131 deneyimi olumsuz etkilenir. Bu nedenle, performans ve optimizasyon, modern web geli\u015ftirmede kritik \u00f6neme sahiptir. JavaScript kodunuzu optimize etmek, uygulaman\u0131z\u0131n daha h\u0131zl\u0131 y\u00fcklenmesini, daha ak\u0131c\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 ve daha az kaynak t\u00fcketmesini sa\u011flar. Optimizasyon, sadece kodun kendisiyle s\u0131n\u0131rl\u0131 de\u011fildir; ayn\u0131 zamanda varl\u0131klar\u0131n (resimler, CSS dosyalar\u0131) boyutunu k\u00fc\u00e7\u00fcltmeyi, a\u011f isteklerini azaltmay\u0131 ve taray\u0131c\u0131n\u0131n olu\u015fturma s\u00fcrecini (rendering) h\u0131zland\u0131rmay\u0131 da i\u00e7erir. \u00d6rne\u011fin, DOM manip\u00fclasyonlar\u0131n\u0131 minimize etmek, gereksiz yeniden \u00e7izimleri (reflows ve repaints) \u00f6nlemek, asenkron i\u015flemleri do\u011fru y\u00f6netmek ve b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken verimli algoritmalar kullanmak performans art\u0131\u015f\u0131na katk\u0131da bulunur. Ayr\u0131ca, modern taray\u0131c\u0131lar\u0131n JavaScript motorlar\u0131 s\u00fcrekli olarak geli\u015fmektedir, bu nedenle g\u00fcncel ES6+ \u00f6zelliklerini do\u011fru bir \u015fekilde kullanmak genellikle daha optimize edilmi\u015f kod anlam\u0131na gelir.<\/p>\n<p>Performans optimizasyonu, geli\u015ftirme s\u00fcrecinin ba\u015f\u0131ndan itibaren d\u00fc\u015f\u00fcn\u00fclmesi gereken bir konudur. Kod yazarken, sadece i\u015flevselli\u011fi sa\u011flamakla kalmay\u0131p, ayn\u0131 zamanda olas\u0131 darbo\u011fazlar\u0131 ve performans zay\u0131fl\u0131klar\u0131n\u0131 da g\u00f6z \u00f6n\u00fcnde bulundurmal\u0131s\u0131n\u0131z. Taray\u0131c\u0131n\u0131n geli\u015ftirici ara\u00e7lar\u0131n\u0131 (Developer Tools) kullanarak performans profili olu\u015fturmak, uygulaman\u0131z\u0131n nerede yava\u015flad\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur. A\u011f sekmesi, kaynaklar\u0131n y\u00fcklenme s\u00fcrelerini g\u00f6sterirken, Performans sekmesi, JavaScript y\u00fcr\u00fctme s\u00fcresini, layout hesaplamalar\u0131n\u0131 ve boyama i\u015flemlerini g\u00f6rselle\u015ftirir. Bu ara\u00e7lar\u0131 etkili bir \u015fekilde kullanmak, optimizasyon \u00e7abalar\u0131n\u0131zda size yol g\u00f6sterecektir. Sonu\u00e7 olarak, performans odakl\u0131 bir yakla\u015f\u0131m benimsemek, hem kullan\u0131c\u0131 memnuniyetini art\u0131r\u0131r hem de uygulaman\u0131z\u0131n daha geni\u015f bir kitleye ula\u015fmas\u0131n\u0131 sa\u011flar. Bu nedenle, yazd\u0131\u011f\u0131n\u0131z her kod sat\u0131r\u0131nda verimlili\u011fi ve h\u0131z\u0131 g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z, sizi daha iyi bir geli\u015ftirici yapacakt\u0131r.<\/p>\n<h3>Mobil Uyumluluk ve Duyarl\u0131 Tasar\u0131m \u0130\u00e7in CSS Media Query \u00d6rnekleri<\/h3>\n<p>G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131lar\u0131n b\u00fcy\u00fck bir \u00e7o\u011funlu\u011fu internete mobil cihazlar \u00fczerinden eri\u015fmektedir. Bu durum, web sitelerinin ve uygulamalar\u0131n\u0131n farkl\u0131 ekran boyutlar\u0131na ve cihazlara duyarl\u0131 (responsive) olmas\u0131 gereklili\u011fini ortaya \u00e7\u0131karm\u0131\u015ft\u0131r. JavaScript tek ba\u015f\u0131na duyarl\u0131 tasar\u0131m sa\u011flamazken, kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc dinamik olarak ayarlamak i\u00e7in CSS Media Query'ler ile birlikte \u00e7al\u0131\u015f\u0131r. Media Query'ler, CSS kurallar\u0131n\u0131n belirli ko\u015fullara (ekran geni\u015fli\u011fi, cihaz tipi, y\u00f6nlendirme vb.) g\u00f6re uygulanmas\u0131n\u0131 sa\u011flar. Bu sayede, ayn\u0131 HTML yap\u0131s\u0131n\u0131 kullanarak farkl\u0131 cihazlarda optimal bir g\u00f6r\u00fcn\u00fcm ve kullan\u0131c\u0131 deneyimi sunabilirsiniz. \u00d6rne\u011fin, k\u00fc\u00e7\u00fck ekranlarda men\u00fcy\u00fc daraltmak, yaz\u0131 boyutlar\u0131n\u0131 de\u011fi\u015ftirmek veya s\u00fctunlar\u0131 alt alta s\u0131ralamak gibi i\u015flemler Media Query'ler ile kolayca y\u00f6netilebilir.<\/p>\n<p>A\u015fa\u011f\u0131da CSS Media Query kullan\u0131m\u0131na dair konseptel bir \u00f6rnek bulunmaktad\u0131r:<\/p>\n<pre><code>\n\/* Varsay\u0131lan stil: Geni\u015f ekranlar i\u00e7in *\/\nbody {\n  font-family: Arial, sans-serif;\n  background-color: #f4f4f4;\n  margin: 20px;\n}\n\n.container {\n  display: grid;\n  grid-template-columns: 1fr 1fr 1fr; \/* 3 s\u00fctunlu d\u00fczen *\/\n  gap: 20px;\n}\n\n.card {\n  background-color: #fff;\n  padding: 15px;\n  border-radius: 8px;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n\/* Mobil cihazlar i\u00e7in Media Query (ekran geni\u015fli\u011fi 768px veya daha az oldu\u011funda) *\/\n@media screen and (max-width: 768px) {\n  .container {\n    grid-template-columns: 1fr; \/* Tek s\u00fctunlu d\u00fczen *\/\n  }\n\n  h2 {\n    font-size: 24px;\n  }\n\n  .card {\n    margin-bottom: 15px; \/* Kartlar aras\u0131na bo\u015fluk ekle *\/\n  }\n}\n\n\/* \u00c7ok k\u00fc\u00e7\u00fck mobil cihazlar i\u00e7in Media Query (ekran geni\u015fli\u011fi 480px veya daha az oldu\u011funda) *\/\n@media screen and (max-width: 480px) {\n  body {\n    margin: 10px;\n  }\n  h2 {\n    font-size: 20px;\n  }\n  .card {\n    padding: 10px;\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu CSS kodu, temel bir sayfa d\u00fczenini farkl\u0131 ekran boyutlar\u0131na nas\u0131l uyarlad\u0131\u011f\u0131n\u0131 g\u00f6sterir. <code>body<\/code>, <code>container<\/code> ve <code>card<\/code> gibi elementler i\u00e7in varsay\u0131lan stiller tan\u0131mlanm\u0131\u015ft\u0131r. Ard\u0131ndan, <code>@media screen and (max-width: 768px)<\/code> ve <code>@media screen and (max-width: 480px)<\/code> gibi Media Query'ler kullan\u0131larak, ekran geni\u015fli\u011fi belirli bir e\u015fi\u011fin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde farkl\u0131 CSS kurallar\u0131n\u0131n uygulanmas\u0131 sa\u011flan\u0131r. \u00d6rne\u011fin, 768 pikselden k\u00fc\u00e7\u00fck ekranlarda <code>container<\/code> \u00f6\u011fesi tek s\u00fctunlu bir d\u00fczene ge\u00e7erken, 480 pikselden k\u00fc\u00e7\u00fck ekranlarda genel sayfa kenar bo\u015fluklar\u0131 k\u00fc\u00e7\u00fcl\u00fcr. JavaScript, genellikle Media Query'lerle do\u011frudan stil de\u011fi\u015ftirmek yerine, bir Media Query'nin aktif olup olmad\u0131\u011f\u0131n\u0131 kontrol ederek veya belirli bir viewport boyutunda farkl\u0131 JavaScript fonksiyonlar\u0131 veya bile\u015fenleri y\u00fckleyerek duyarl\u0131 davran\u0131\u015f\u0131 destekler. \u00d6rne\u011fin, bir men\u00fcn\u00fcn a\u00e7\u0131l\u0131p kapanmas\u0131 veya farkl\u0131 bir bile\u015fenin g\u00f6sterilmesi gibi interaktif \u00f6\u011felerin davran\u0131\u015f\u0131 JavaScript ile y\u00f6netilebilir. Bu kombinasyon, t\u00fcm cihazlarda tutarl\u0131 ve keyifli bir kullan\u0131c\u0131 deneyimi sunmak i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<h3>En \u0130yi Uygulamalar: Temiz ve S\u00fcrd\u00fcr\u00fclebilir JavaScript Kodu Nas\u0131l Yaz\u0131l\u0131r?<\/h3>\n<p>Temiz ve s\u00fcrd\u00fcr\u00fclebilir JavaScript kodu yazmak, sadece uygulaman\u0131z\u0131n verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamakla kalmaz, ayn\u0131 zamanda gelecekteki bak\u0131m\u0131n\u0131 kolayla\u015ft\u0131r\u0131r, hata oran\u0131n\u0131 azalt\u0131r ve ekip \u00e7al\u0131\u015fmas\u0131n\u0131 daha verimli hale getirir. Bir geli\u015ftiricinin yazd\u0131\u011f\u0131 kod, sadece bilgisayar taraf\u0131ndan de\u011fil, di\u011fer geli\u015ftiriciler taraf\u0131ndan da kolayca okunabilir ve anla\u015f\u0131labilir olmal\u0131d\u0131r. Bu, \"kodlama standartlar\u0131\" ad\u0131 verilen belirli kurallar ve \u00f6neriler setini takip etmeyi gerektirir. \u00d6rne\u011fin, de\u011fi\u015fken ve fonksiyon adland\u0131rmalar\u0131 anlaml\u0131 olmal\u0131, camelCase veya snake_case gibi tutarl\u0131 bir adland\u0131rma convention'\u0131 izlemelidir. Fonksiyonlar tek bir g\u00f6revi yerine getirmeli (Single Responsibility Principle) ve k\u00fc\u00e7\u00fck olmal\u0131d\u0131r. Yorum sat\u0131rlar\u0131, karma\u015f\u0131k mant\u0131klar\u0131 a\u00e7\u0131klamak veya gelecekteki de\u011fi\u015fiklikler i\u00e7in notlar b\u0131rakmak amac\u0131yla stratejik olarak kullan\u0131lmal\u0131d\u0131r, ancak kendini a\u00e7\u0131klayan kod her zaman daha iyidir.<\/p>\n<p>Ayr\u0131ca, gereksiz karma\u015f\u0131kl\u0131ktan ka\u00e7\u0131nmak, kod tekrar\u0131n\u0131 \u00f6nlemek (DRY - Don't Repeat Yourself), hatalar\u0131 yakalamak i\u00e7in <code>try-catch<\/code> bloklar\u0131n\u0131 kullanmak ve mod\u00fcler bir yap\u0131 benimsemek (kodunuzu k\u00fc\u00e7\u00fck, ba\u011f\u0131ms\u0131z dosyalara b\u00f6lmek) en iyi uygulamalar aras\u0131ndad\u0131r. ESLint gibi ara\u00e7lar, kodunuzun belirli bir standart setine uygunlu\u011funu otomatik olarak kontrol etmenize yard\u0131mc\u0131 olabilir. Test yazmak da, kodunuzun beklenen \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 garanti alt\u0131na alman\u0131n ve gelecekteki de\u011fi\u015fikliklerin mevcut i\u015flevselli\u011fi bozmad\u0131\u011f\u0131ndan emin olman\u0131n en etkili yollar\u0131ndan biridir. Bu uygulamalar\u0131 benimseyerek, sadece daha iyi kod yazmakla kalmayacak, ayn\u0131 zamanda daha profesyonel ve aranan bir geli\u015ftirici haline geleceksiniz. S\u00fcrd\u00fcr\u00fclebilir kod, projenin \u00f6mr\u00fcn\u00fc uzat\u0131r ve zamanla biriken teknik borcu azalt\u0131r, bu da uzun vadede hem geli\u015ftiriciye hem de i\u015fletmeye fayda sa\u011flar.<\/p>\n<h2>Sonu\u00e7: JavaScript Ustal\u0131\u011f\u0131na Giden Yol ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu \"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\" ile web geli\u015ftirme yolculu\u011funuzda \u00f6nemli bir e\u015fi\u011fi a\u015fm\u0131\u015f oldunuz. Temel s\u00f6zdiziminden asenkron programlamaya, DOM manip\u00fclasyonundan ES6+ \u00f6zelliklerine kadar geni\u015f bir yelpazede bilgi ve pratik tecr\u00fcbe edindiniz. JavaScript'in sadece bir programlama dili olmaktan \u00f6te, web'i \u015fekillendiren dinamik bir g\u00fc\u00e7 oldu\u011funu \u00f6\u011frendiniz. Bu s\u00fcre\u00e7te edindi\u011finiz bilgiler, size modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in sa\u011flam bir temel sunarken, ayn\u0131 zamanda ileri d\u00fczey k\u00fct\u00fcphane ve framework'lere (React, Angular, Vue.js gibi) ge\u00e7i\u015f yapman\u0131z i\u00e7in gerekli altyap\u0131y\u0131 da olu\u015fturmu\u015ftur. Unutmay\u0131n, \u00f6\u011frenme s\u00fcreci s\u00fcrekli devam eden bir yolculuktur. JavaScript ekosistemi h\u0131zla geli\u015fti\u011fi i\u00e7in, yeni geli\u015fmeleri takip etmek ve kendinizi s\u00fcrekli g\u00fcncel tutmak hayati \u00f6nem ta\u015f\u0131r. Bu rehberin size bu yolda \u0131\u015f\u0131k tuttu\u011funu umuyoruz ve ba\u015far\u0131lar diliyoruz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS):<\/h3>\n<p><strong>1. Bu yolculuk i\u00e7in \u00f6nceden bilgi gerekli mi?<\/strong><\/p>\n<p>Hay\u0131r, bu k\u0131lavuz tamamen ba\u015flang\u0131\u00e7 seviyesinden ba\u015flayarak orta seviyeye ula\u015fmay\u0131 hedeflemektedir. HTML ve CSS hakk\u0131nda temel bilgilere sahip olman\u0131z, DOM manip\u00fclasyonu gibi konularda size avantaj sa\u011flayabilir ancak zorunlu de\u011fildir.<\/p>\n<p><strong>2. 60 g\u00fcn sonunda hangi projeleri yapabilirim?<\/strong><\/p>\n<p>60 g\u00fcn sonunda, dinamik bir To-Do List uygulamas\u0131, basit bir hava durumu uygulamas\u0131, interaktif bir slayt g\u00f6sterisi, temel form do\u011frulama sistemleri ve hatta API'lardan veri \u00e7eken basit web sayfalar\u0131 gibi orta d\u00fczey projeler geli\u015ftirebilecek bilgiye sahip olacaks\u0131n\u0131z. Bu, React veya Vue gibi framework'lere ge\u00e7i\u015f yapman\u0131z i\u00e7in de g\u00fc\u00e7l\u00fc bir temel olu\u015fturacakt\u0131r.<\/p>\n<p><strong>3. Hangi kaynaklar\u0131 kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>Bu k\u0131lavuza ek olarak, MDN Web Docs (Mozilla Developer Network), freeCodeCamp, The Odin Project ve Codecademy gibi platformlar, interaktif dersler ve pratik al\u0131\u015ft\u0131rmalar sunarak \u00f6\u011frenme s\u00fcrecinizi destekleyecektir. Ayr\u0131ca, YouTube'daki kaliteli e\u011fitim kanallar\u0131 ve g\u00fcncel JavaScript kitaplar\u0131 da faydal\u0131 kaynaklard\u0131r.<\/p>\n<p><strong>4. JavaScript \u00f6\u011frenirken yap\u0131lan en yayg\u0131n hatalar nelerdir?<\/strong><\/p>\n<p>En yayg\u0131n hatalar aras\u0131nda; sab\u0131rs\u0131zl\u0131k, pratik yapmamak, hata mesajlar\u0131n\u0131 okumamaktan kaynaklanan sorunlar, <code>var<\/code> yerine <code>let<\/code> ve <code>const<\/code> kullanman\u0131n \u00f6nemini g\u00f6z ard\u0131 etmek, asenkron i\u015flemleri yanl\u0131\u015f anlamak ve DOM manip\u00fclasyonunda performans\u0131 d\u00fc\u015f\u00fcnmemek yer al\u0131r. D\u00fczenli pratik yapmak ve hatalardan ders \u00e7\u0131karmak bu hatalar\u0131 en aza indirecektir.<\/p>\n<p><strong>5. Orta seviyeden sonra nereye gitmeliyim?<\/strong><\/p>\n<p>Orta seviyeden sonra, React, Angular veya Vue.js gibi modern JavaScript framework'lerinden birini \u00f6\u011frenerek b\u00fcy\u00fck \u00f6l\u00e7ekli ve karma\u015f\u0131k kullan\u0131c\u0131 aray\u00fczleri geli\u015ftirmeye odaklanabilirsiniz. Ayr\u0131ca Node.js ile backend geli\u015ftirme veya TypeScript gibi statik tipli bir JavaScript \u00fcst k\u00fcmesini \u00f6\u011frenmek de kariyerinizde yeni kap\u0131lar a\u00e7acakt\u0131r. Ger\u00e7ek d\u00fcnya projelerine kat\u0131l\u0131m sa\u011flamak veya kendi projelerinizi geli\u015ftirmek de bilgilerinizi peki\u015ftirmenin en iyi yollar\u0131ndand\u0131r.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript&#8217;in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz!&hellip;","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-32749","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>60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz<\/title>\n<meta name=\"description\" content=\"Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript&#039;in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz! Bu kapsaml\u0131 rehber, \u201c60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\u201d ile en temel konulardan ileri d\u00fczey uygulamalara kadar uzanan, size \u00f6zel tasarlanm\u0131\u015f bir yol haritas\u0131 sunuyor. Amac\u0131m\u0131z, bu 60 g\u00fcnl\u00fck ser\u00fcvenin sonunda kendinize g\u00fcvenen, ger\u00e7ek d\u00fcnya projeleri geli\u015ftirebilen bir JavaScript geli\u015ftiricisi olman\u0131z\u0131 sa\u011flamak.\" \/>\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\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\" \/>\n<meta property=\"og:description\" content=\"Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript&#039;in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz! Bu kapsaml\u0131 rehber, \u201c60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\u201d ile en temel konulardan ileri d\u00fczey uygulamalara kadar uzanan, size \u00f6zel tasarlanm\u0131\u015f bir yol haritas\u0131 sunuyor. Amac\u0131m\u0131z, bu 60 g\u00fcnl\u00fck ser\u00fcvenin sonunda kendinize g\u00fcvenen, ger\u00e7ek d\u00fcnya projeleri geli\u015ftirebilen bir JavaScript geli\u015ftiricisi olman\u0131z\u0131 sa\u011flamak.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-25T11:01:33+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=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\",\"datePublished\":\"2025-10-25T11:01:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/\"},\"wordCount\":1279,\"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\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/\",\"name\":\"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-25T11:01:33+00:00\",\"description\":\"Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript'in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz! Bu kapsaml\u0131 rehber, \u201c60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\u201d ile en temel konulardan ileri d\u00fczey uygulamalara kadar uzanan, size \u00f6zel tasarlanm\u0131\u015f bir yol haritas\u0131 sunuyor. Amac\u0131m\u0131z, bu 60 g\u00fcnl\u00fck ser\u00fcvenin sonunda kendinize g\u00fcvenen, ger\u00e7ek d\u00fcnya projeleri geli\u015ftirebilen bir JavaScript geli\u015ftiricisi olman\u0131z\u0131 sa\u011flamak.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\"}]},{\"@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":"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz","description":"Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript'in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz! Bu kapsaml\u0131 rehber, \u201c60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\u201d ile en temel konulardan ileri d\u00fczey uygulamalara kadar uzanan, size \u00f6zel tasarlanm\u0131\u015f bir yol haritas\u0131 sunuyor. Amac\u0131m\u0131z, bu 60 g\u00fcnl\u00fck ser\u00fcvenin sonunda kendinize g\u00fcvenen, ger\u00e7ek d\u00fcnya projeleri geli\u015ftirebilen bir JavaScript geli\u015ftiricisi olman\u0131z\u0131 sa\u011flamak.","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\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/","og_locale":"tr_TR","og_type":"article","og_title":"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz","og_description":"Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript'in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz! Bu kapsaml\u0131 rehber, \u201c60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\u201d ile en temel konulardan ileri d\u00fczey uygulamalara kadar uzanan, size \u00f6zel tasarlanm\u0131\u015f bir yol haritas\u0131 sunuyor. Amac\u0131m\u0131z, bu 60 g\u00fcnl\u00fck ser\u00fcvenin sonunda kendinize g\u00fcvenen, ger\u00e7ek d\u00fcnya projeleri geli\u015ftirebilen bir JavaScript geli\u015ftiricisi olman\u0131z\u0131 sa\u011flamak.","og_url":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-25T11:01:33+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz","datePublished":"2025-10-25T11:01:33+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/"},"wordCount":1279,"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\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/","url":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/","name":"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-25T11:01:33+00:00","description":"Web geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m atmak m\u0131 istiyorsunuz, ancak JavaScript'in karma\u015f\u0131kl\u0131\u011f\u0131 g\u00f6z\u00fcn\u00fcz\u00fc m\u00fc korkutuyor? Hi\u00e7 merak etmeyin, do\u011fru yerdesiniz! Bu kapsaml\u0131 rehber, \u201c60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz\u201d ile en temel konulardan ileri d\u00fczey uygulamalara kadar uzanan, size \u00f6zel tasarlanm\u0131\u015f bir yol haritas\u0131 sunuyor. Amac\u0131m\u0131z, bu 60 g\u00fcnl\u00fck ser\u00fcvenin sonunda kendinize g\u00fcvenen, ger\u00e7ek d\u00fcnya projeleri geli\u015ftirebilen bir JavaScript geli\u015ftiricisi olman\u0131z\u0131 sa\u011flamak.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/60-gunluk-javascript-baslangictan-orta-seviyeye-tam-kilavuz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"60 G\u00fcnl\u00fck JavaScript: Ba\u015flang\u0131\u00e7tan Orta Seviyeye Tam K\u0131lavuz"}]},{"@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\/32749","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=32749"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32749\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32749"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}