JavaScript Documentation
Concise, example-driven JavaScript reference. Read the concept, see the code, then practice it in a Coddy journey.
Start a guided JavaScript journeyBaşlarken
- JavaScript NedirJavaScript tam olarak nedir, nerede çalışır, ne işe yarar ve Java ile TypeScript'ten farkı nedir? Yeni başlayanlar için sade ve net bir giriş.
- JS ÇalıştırmaJavaScript kodunu çalıştırmanın pratik yolları: tarayıcı konsolu, HTML içinde script etiketi ve terminalden Node.js — hangisini ne zaman kullanmalısın?
- Söz Dizimi & ;JavaScript söz dizimi nasıl çalışır — ifadeler, bloklar, expression'lar — ve noktalı virgül meselesinin aslı: otomatik noktalı virgül ekleme (ASI) ne zaman başınızı ağrıtır?
- Strict ModeJavaScript'te strict mode tam olarak neyi değiştirir, nasıl aktif edilir ve neden modern kod (modüller ve sınıflar) bunu zaten varsayılan olarak kullanır?
- Yorum SatırlarıJavaScript'te yorum satırları nasıl yazılır? Tek satır için `//`, çok satır için `/* */` kullanımı ve yorumları gürültüye dönüştürmeden faydalı hale getirmenin yolları.
Değişkenler ve türler
- let, const, varJavaScript'te değişken tanımlamanın üç yolu var. Modern kodda neden varsayılan olarak `const`, gerektiğinde `let` ve neredeyse hiç `var` kullanmıyoruz?
- Primitive TiplerJavaScript'teki yedi primitive tip — string, number, bigint, boolean, null, undefined ve symbol — ve bunların objelerden farkı.
- String & TemplateJavaScript'te string'ler nasıl çalışır? Tırnak ve backtick farkı, değişken gömme, çok satırlı metin ve en çok kullanılan string metotları.
- Number ve BigIntJavaScript'te Number tipi nasıl çalışır? Floating-point hassasiyet sorunları, MAX_SAFE_INTEGER ve büyük tam sayılar için BigInt'e ne zaman geçmeli?
- null vs undefinedJavaScript'te null ile undefined arasındaki fark tam olarak nedir, nasıl kontrol edilir ve kendi kodunuzda hangisini tercih etmelisiniz?
- Tip DönüşümüJavaScript değerleri tipler arasında nasıl dönüştürür? Kafa karıştıran implicit kuralları, tercih etmeniz gereken explicit dönüşümleri ve hangisinin ne zaman devreye girdiğini inceliyoruz.
- Eşitlik OperatörleriJavaScript'te eşitlik gerçekte nasıl çalışır? == ile ==='ün farkı, NaN'ın tuhaflıkları, nesne karşılaştırması ve Object.is'i ne zaman kullanmalısın — hepsi örneklerle.
Kontrol akışı
- OperatörlerJavaScript'te matematik yapmak, değer karşılaştırmak, boolean birleştirmek ve atama yapmak için kullanılan operatörler — ve pratikte canınızı yakacak incelikleriyle birlikte.
- if / elseJavaScript'te if/else nasıl çalışır? Koşul yazımı, else if zincirleri, truthy/falsy tuzakları ve ne zaman ternary operatörüne geçmen gerektiğini anlatıyoruz.
- SwitchJavaScript switch ifadesi nasıl çalışır? case, break, default ve fallthrough davranışı ile switch'in if/else zincirine üstün geldiği durumlar.
- for DöngüsüJavaScript'te klasik `for` döngüsü nasıl çalışır? Üç parçalı başlık, dizi üzerinde dönme, break ve continue, iç içe döngüler ve sık yapılan hatalar.
- While DöngüsüJavaScript'te `while` ve `do...while` döngüleri nasıl çalışır? Ne zaman `for` yerine while kullanmalı ve sonsuz döngüye düşmeden nasıl yazmalı?
- for...of & for...inJavaScript'te for...of ve for...in arasındaki fark tam olarak nedir? Değer mi anahtar mı, dizi mi nesne mi, hangisini ne zaman kullanmalı?
- Truthy & FalsyJavaScript'te hangi değerler truthy, hangileri falsy sayılır? Tam falsy listesi ve boolean dönüşümünün gerçek kodda nasıl davrandığını adım adım görelim.
Yineleme
- Iterator ve GeneratorJavaScript'te iterator protokolü nasıl çalışır, kendi nesnelerinizi nasıl iterable yaparsınız ve generator fonksiyonları bu işi nasıl kolaylaştırır?
- SymbolJavaScript'te symbol nedir, ne işe yarar ve Symbol.iterator gibi well-known symbol'ler kendi nesnelerinizi dilin yapısına nasıl bağlar?
Fonksiyonlar
- Function TanımlamaJavaScript'te fonksiyon nasıl tanımlanır? `function` anahtar kelimesi, parametreler, `return`, hoisting ve ne zaman declaration ne zaman expression kullanmalı — hepsi burada.
- Arrow FunctionJavaScript'te arrow function nasıl çalışır? `=>` söz dizimi, implicit return, `this` davranışı ve ne zaman klasik `function` yerine ok fonksiyonu tercih etmelisiniz — hepsi örneklerle.
- Default ParametrelerJavaScript'te fonksiyon parametreleri nasıl çalışır? Varsayılan değerler, undefined tetikleyicisi, değerlendirme sırası ve parametre ile argüman farkı.
- Rest & SpreadJavaScript'te ... operatörünün nasıl çalıştığını konuşalım: rest parametreleriyle argümanları toplamak, spread ile dizi ve nesneleri açmak, hangisi ne zaman kullanılır?
- ClosureClosure, etrafındaki değişkenleri hatırlayan bir fonksiyondur. JavaScript'te closure mantığını çalışan örneklerle ve gerçek kullanım senaryolarıyla inceliyoruz.
- this Anahtar KelimesiJavaScript'te `this` aslında nasıl çalışır? Dört bağlama kuralı, arrow function'larda neden farklı davrandığı ve klasik 'this is undefined' tuzağından kurtulma yolları.
- Higher-Order FunctionsJavaScript'te higher-order function mantığı: fonksiyonu argüman olarak geçirmek, fonksiyondan fonksiyon döndürmek ve her gün kullanacağın map, filter, reduce kalıpları.
Nesneler ve diziler
- ObjectJavaScript'te object nasıl çalışır? Oluşturma, özellik okuma-yazma, metot ekleme ve kodu okunur tutan pratik kalıpları örneklerle anlatıyoruz.
- DizilerJavaScript'te diziler nasıl çalışır? Oluşturma, indeksleme, length, push/pop, slice ve splice farkı ve dizi üzerinde en temiz döngü yöntemleri.
- DestructuringJavaScript'te destructuring nasıl çalışır? Obje ve dizi desenleri, yeniden adlandırma, varsayılan değerler, iç içe kullanım ve fonksiyon parametrelerinde pratik örnekler.
- Object SpreadJavaScript'te object spread operatörü nasıl çalışır? Nesne klonlama, birleştirme, property ezme ve herkesi yakalayan o shallow copy tuzağı.
- Dizi Metotlarıfor döngülerinin çoğunun yerini alan dizi metotları: map, filter, reduce, find, some, every. Hangileri diziyi değiştirir, hangileri yeni dizi döndürür?
- Map & SetJavaScript'te Map ve Set nasıl çalışır, plain object ve array'den farkları nelerdir, hangi durumda hangisini tercih etmek mantıklı?
- JSONJavaScript nesnelerini JSON'a çevirmek ve geri almak — JSON.stringify, JSON.parse, replacer ve reviver fonksiyonları ile gidiş-dönüşte kaybolan değerler.
- Optional Chaining`?.` operatörü, iç içe nesnelere, dizilere ve metotlara `null` veya `undefined` hatası almadan nasıl ulaşmanı sağlıyor?
- Nullish Coalescing`??` operatörü varsayılan değeri yalnızca değer `null` ya da `undefined` olduğunda devreye sokar — ve bu yüzden çoğu gerçek senaryoda `||` operatöründen çok daha güvenlidir.
Sınıflar ve prototipler
- ClassJavaScript'te `class` gerçekte nasıl çalışıyor? Constructor, metotlar, instance field'lar, getter/setter ve `new` anahtar kelimesinin arkasındaki mantık.
- Kalıtım (Inheritance)JavaScript sınıflarında kalıtımın nasıl çalıştığı: extends, super, metot override etme ve kalıtımın yanlış tercih olduğu durumlar.
- Statik ÜyelerJavaScript sınıflarında statik metot ve özellikler nasıl çalışır? `static` anahtar kelimesi, `this` davranışı ve factory pattern örnekleriyle anlatıyoruz.
- Private Fields`#` öneki ile sınıf alanlarını ve metotlarını gerçekten nasıl private yaparsınız? Syntax, kurallar ve neden alt çizgi konvansiyonu yetersiz kalıyor?
- PrototypeJavaScript'te prototype tam olarak nedir, prototype zinciri özellik aramayı nasıl çözer ve `class` sözdizimi bu mekanizmanın üstüne nasıl oturur?
Asenkron JavaScript
- Event LoopAsync JavaScript'in arka planındaki mantık: call stack, task queue, microtask queue ve event loop'un bunları nasıl bir araya getirdiği.
- Callback FonksiyonlarıJavaScript'te callback fonksiyonları nasıl çalışır? Fonksiyonu argüman olarak geçmekten error-first pattern'e, callback hell'den promise'lere kadar her şey.
- PromiseJavaScript'te Promise nasıl çalışır? Üç durumu, then ve catch ile zincirleme, Promise.all ile paralel çalıştırma ve new Promise ile kendi Promise'inizi yazma.
- async/awaitJavaScript'te async/await gerçekten nasıl çalışır? async fonksiyonlar, await ile promise bekleme, try/catch ile hata yönetimi ve Promise.all ile paralel çalıştırma.
- Fetch APIJavaScript'te Fetch API nasıl kullanılır? GET ve POST istekleri, JSON parse etme, hata yakalama ve yavaş istekleri iptal etmeyi örneklerle anlatıyoruz.
- Async HatalarAsync JavaScript'te hatalar gerçekte nasıl akar? async/await ile try/catch, promise'lerde .catch ve hataları sessizce yutan tuzaklar.
Modüller ve araçlar
- ES ModulesJavaScript'te ES modüllerinin çalışma mantığı: named ve default export'lar, import sözdizimi, dynamic import() ve modülleri klasik script'lerden ayıran kurallar.
- CommonJS vs ESMNode.js projelerinde karşımıza çıkan iki modül sistemi: require ve import arasındaki fark, .cjs ile .mjs uzantıları ve hangisini ne zaman kullanmalı.
- npm Temellerinpm gerçekte nasıl çalışır? Paket kurmaktan init'e, dev bağımlılıklarından güncellemelere; node_modules ve lockfile mantığını sıfırdan anlatıyoruz.
- package.jsonpackage.json dosyasının içinde neler var? Önemli alanlar, scripts bölümü nasıl çalışır ve semver aralıkları npm'in hangi sürümü kuracağına nasıl karar verir — hepsi burada.
- Node.js RuntimeNode.js runtime nedir, tarayıcıdan farkı nerede başlar ve sunucu tarafında JavaScript'i mümkün kılan globaller, modüller, process, fs gibi temel API'ler nasıl çalışır?
Hatalar ve hata ayıklama
- try/catchJavaScript'te try/catch/finally nasıl çalışır? Hata nesnesi, hatayı tekrar fırlatma (rethrow) ve try/catch'in yanlış tercih olduğu durumlar.
- Hata TürleriJavaScript'in yerleşik hata türleri: her biri ne anlama geliyor, ne zaman karşına çıkar ve hata mesajını tahmin yürütmeden nasıl okursun.
- Console ve DevToolsHer yere console.log serpiştirmek yerine JavaScript hatalarını çok daha hızlı ayıklamanı sağlayan console metotları ve DevTools özellikleri.
Gerçek verilerle çalışmak
- RegexJavaScript'te düzenli ifadeler nasıl çalışır? Pattern oluşturma, temel metotlar (test, match, replace), flag'ler ve yakalama grupları gerçek örneklerle.
- Tarih ve SaatJavaScript'te Date nesnesi nasıl çalışır? Tarih oluşturma, biçimlendirme, karşılaştırma, zaman dilimi sorunları ve en sık yapılan hataların pratik anlatımı.
- URL ve Query StringJavaScript'te `URL` ve `URLSearchParams` API'leri ile URL parse etme, query string okuma ve parametre ekleme — regex'e gerek kalmadan, encoding derdi çekmeden.