JavaScript öğrenmenin en sağlam yolu, dilin çekirdeğini sırayla oturtmaktır: önce değişkenler, veri tipleri ve karşılaştırma kuralları, ardından fonksiyonlar ve kapsam, sonra asenkron programlama, veri yapıları ve modern dil özellikleri. Bu sayfa, MDN JavaScript Guide bölümlerinin sırasını temel alan bir öğrenme yolu sunar ve serideki 35 yazının tamamını konu başlıklarına göre listeler.

JavaScript'in ne olduğunu, nerelerde kullanıldığını ve kısa tarihçesini JavaScript nedir yazısında anlattık; burada o konulara girmiyoruz. Bu rehber, dili düzenli biçimde öğrenmek isteyenler için bir harita işlevi görür: neyi hangi sırayla çalışacağınızı, kodu nerede çalıştıracağınızı ve hangi kaynağa güveneceğinizi gösterir.

ECMAScript nedir, JavaScript ile ilişkisi ne?

ECMAScript nedir, JavaScript ile ilişkisi ne? ES5 (2009), ES2015 (6. baskı), ES2017, ES2020

JavaScript dilinin resmî tanımı ECMAScript adını taşır ve Ecma International bünyesinde ECMA-262 numaralı standart olarak yayımlanır. Standardı geliştiren çalışma grubu TC39'dur. ECMA-262 aynı zamanda ISO/IEC 16262 olarak da onaylanmıştır. Tarayıcılardaki ve Node.js'teki JavaScript motorları bu standarda göre yazılır; böylece aynı kod farklı ortamlarda aynı dil kurallarıyla çalışır.

Yerel kopyasını incelediğimiz spesifikasyon taslağı kendisini ECMAScript 2027, yani ECMAScript dil spesifikasyonunun on sekizinci baskısı olarak tanımlıyor. 2015 yılında kabul edilen altıncı baskı (ES2015) dil için büyük bir dönüm noktasıydı: modüller, sınıf bildirimleri, blok kapsamlı değişkenler, iterator ve generator yapıları, Promise ve destructuring bu baskıyla geldi. ES2016'dan bu yana standart her yıl yeni bir baskıyla güncelleniyor.

BaskıSpesifikasyonun öne çıkardığı yenilikler
ES5 (2009)strict mode, JSON desteği, erişimci (accessor) özellikler
ES2015 (6. baskı)modüller, class, let/const blok kapsamı, iterator, generator, Promise, destructuring
ES2017async fonksiyonlar, Object.values, Object.entries
ES2020BigInt, dinamik import(), Promise.allSettled, globalThis, ?? ve ?. operatörleri
ES2022modüllerde üst düzey await, private sınıf alanları, static blok, at(), Object.hasOwn
ES2024Object.groupBy, Map.groupBy, Promise.withResolvers, RegExp v bayrağı
ES2025Iterator yardımcı metotları, Set metotları, JSON modülleri, RegExp.escape, Promise.try
ES2026Math.sumPrecise, Iterator.concat, Array.fromAsync, Error.isError

Spesifikasyon, motor geliştiricileri için yazılmış bir gereksinim belgesidir; soyut algoritmalarla konuşur ve öğrenme kaynağı olarak tasarlanmamıştır. Dili öğrenirken MDN'in JavaScript Guide ve Reference sayfaları daha uygundur. Bir davranışın kesin kuralını merak ettiğinizde spesifikasyona bakmak ise iyi bir alışkanlıktır.

Dil ile çalışma ortamı arasındaki fark

JavaScript öğrenirken en sık karışan konu, dilin kendisi ile onu çalıştıran ortamın sunduğu araçlardır. ECMAScript yalnızca hesaplama mantığını tanımlar: tipler, operatörler, fonksiyonlar, nesneler, Promise gibi yerleşik yapılar. Ekrana yazdırma, dosya okuma, ağ isteği gönderme veya modül dosyalarını bulma gibi işler ise çalışma ortamının (host) sorumluluğundadır. Tarayıcı DOM ve diğer Web API'lerini, Node.js ise dosya sistemi gibi sunucu tarafı API'leri sağlar. Hatta console.log() bile dilin değil, ortamın sunduğu bir araçtır.

javascript
// Node.js ile çalıştırıldığında:
console.log(typeof globalThis); // object
console.log(typeof document);   // undefined (DOM tarayıcının sunduğu bir API)
console.log(typeof process);    // object (process Node.js'in sunduğu bir nesne)

Bu ayrım öğrenme planınızı da şekillendirir. Bu serideki yazılar dilin çekirdeğine odaklanır ve örnekler her ortamda aynı sonucu verir. Sunucu tarafı için Node.js nedir yazısına, sayfa içi etkileşim için tarayıcı API'lerine ayrıca çalışmanız gerekir.

JavaScript kodu nasıl çalıştırılır?

Node.js ile

Node.js kurulu bir bilgisayarda bir .js dosyası yazıp terminalden çalıştırabilirsiniz. Kısa denemeler için node -e ile tek satırlık kod çalıştırmak ya da yalnızca node yazarak etkileşimli REPL ortamını açmak da mümkündür. Bu serideki tüm örnekler Node.js 24 ile çalıştırılarak denendi.

javascript
// merhaba.js
const ad = "Dünya";
console.log(`Merhaba, ${ad}!`); // Merhaba, Dünya!
bash
node merhaba.js
node -e "console.log(2 ** 10)"
# 1024

Tarayıcı konsolu ile

Hiçbir şey kurmadan başlamak isterseniz güncel bir tarayıcının geliştirici araçlarındaki konsol yeterlidir. Konsola yazdığınız son ifadenin değeri hemen gösterilir. Enter tuşu satırı çalıştırır; birden fazla satır yazmak için Shift ile birlikte Enter tuşuna basabilirsiniz. MDN, konsolda deneme yaparken kodunuzu strict mode açık bir IIFE içine almayı önerir; böylece yeni başlayanları yanıltan bazı eski davranışlar kapanır ve farklı denemeler birbirinin değişkenlerine karışmaz.

javascript
(function () {
  "use strict";
  function selamla(isim) {
    console.log(`Merhaba ${isim}`);
  }
  selamla("Ayşe"); // Merhaba Ayşe
})();

Önerilen öğrenme sırası

Önerilen öğrenme sırası: 1. Temeller, 2. Fonksiyonlar, 3. Veri yapıları, 4. Dil özellikleri

MDN JavaScript Guide; giriş, dilbilgisi ve tipler, kontrol akışı ve hata yönetimi, döngüler, fonksiyonlar, ifadeler ve operatörler, sayılar ve metinler, tarih ve saat, düzenli ifadeler, dizinli ve anahtarlı koleksiyonlar, nesnelerle çalışma, sınıflar, Promise, typed array, iterator ve generator, kaynak yönetimi, uluslararasılaştırma ve modüller sırasıyla ilerler. Aşağıdaki plan bu sırayı altı aşamada toplar:

  • 1. Temeller: değişken bildirimi, veri tipleri, eşitlik ve tip dönüşümü. Diğer her konu bunların üzerine kurulur.
  • 2. Fonksiyonlar: fonksiyon tanımlama biçimleri, parametreler, kapsam, closure ve this.
  • 3. Veri yapıları: diziler, nesneler, Map ve Set, metinler ve JSON ile veri alışverişi.
  • 4. Dil özellikleri: sınıflar, prototip zinciri, modüller, optional chaining ve template literal.
  • 5. Asenkron programlama: callback, Promise, async/await ve olay döngüsü. Ağ ve dosya işlemlerinin tamamı bu bilgiye dayanır.
  • 6. İleri konular: hata mesajlarını okumak, bellek yönetimi, sayıların sınırları, Symbol ve Proxy ile meta programlama.

Her aşamada okuduğunuz örnekleri kendiniz çalıştırın ve küçük değişikliklerle ne olduğunu gözleyin. Dilin çoğu tuzağı (typeof null, == ile yapılan karşılaştırmalar, TDZ hataları) okuyarak değil deneyerek akılda kalır.

Konu haritası

Serideki yazıların tamamı aşağıda gruplandı. Her yazı tek bir konuya odaklanır ve ilgili yazılara bağlantı verir.

Temeller

Fonksiyonlar

Asenkron programlama ve akış

Veri yapıları

Dil özellikleri

İleri konular ve hatalar

Ekosistem

Öğrenirken sık yapılan hatalar

  • Dil ile tarayıcı API'lerini karıştırmak: document veya fetch dilin değil ortamın parçasıdır. Hata aldığınızda önce kodun hangi ortamda çalıştığını kontrol edin.
  • Eski kalıpları kopyalamak: internette hâlâ var ve == ile yazılmış çok sayıda örnek var. Modern kodda const, let ve === tercih edilir.
  • Spesifikasyonla öğrenmeye çalışmak: ECMA-262 kesin kuralları verir ama öğretmek için yazılmadı. Önce MDN rehberini okuyun, kesin cevap gerektiğinde spesifikasyona dönün.
  • Asenkron konulara erken atlamak: Promise ve async/await, fonksiyonlar ve closure iyi anlaşılmadan kafa karıştırır.
  • Uyumluluğu kontrol etmemek: standarda yeni giren bir özellik her ortamda hazır olmayabilir.

Sık Sorulan Sorular

JavaScript ile ECMAScript aynı şey mi?

ECMAScript, dilin standart tanımının adıdır; JavaScript ise bu standardı uygulayan ve günlük kullanımda tercih edilen addır. MDN'e göre JavaScript, ECMAScript spesifikasyonunda tanımlanan tüm işlevselliği destekler. Tarayıcı veya Node.js gibi ortamlar ise buna kendi API'lerini ekler.

JavaScript öğrenmek için ne kurmam gerekiyor?

Başlamak için güncel bir tarayıcı yeterlidir; geliştirici araçlarındaki konsol kod çalıştırmanıza izin verir. Dosyalarla çalışmak ve sunucu tarafını denemek istediğinizde Node.js kurmanız işinizi kolaylaştırır.

Hangi ECMAScript sürümünü öğrenmeliyim?

Ayrı bir sürüm seçmenize gerek yok. Standart geriye dönük uyumlu biçimde büyür; güncel MDN içeriğini takip ettiğinizde dilin bugünkü hâlini öğrenmiş olursunuz. Yeni bir özelliği kullanacağınız zaman hedef ortamlardaki desteği kontrol etmeniz yeterlidir.

TypeScript'e ne zaman geçmeliyim?

TypeScript, JavaScript'in üzerine tip sistemi ekler ve derlendiğinde yine JavaScript üretir. Bu yüzden önce bu sayfadaki temelleri öğrenmek, TypeScript'in neyi neden denetlediğini anlamayı kolaylaştırır. Ayrıntılar için TypeScript ileri seviye yazısına bakabilirsiniz.

Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: JavaScript nedir · var, let ve const farkı · JavaScript veri tipleri · Node.js nedir · TypeScript ileri seviye