JavaScript, Web'in Dili
JavaScript, web tarayıcılarının içinde çalışan programlama dilidir. Bir sayfada tıklamaya tepki veren buton, doğrulanan form, animasyonlu menü ya da sayfa yenilenmeden yüklenen içerik — hepsinin arkasında JavaScript var. Her cihazdaki her tarayıcı, yerleşik bir JavaScript motoru ile geliyor; bu da onu web üzerinde yerel olarak çalışan tek dil yapıyor.
Artık tarayıcı dışında da koşuyor. Node.js, Deno ve Bun sayesinde JavaScript'i sunucular, komut satırı araçları, derleme betikleri ve API'ler için kullanabilirsiniz. Aynı dilin hem frontend hem de backend tarafını çevirebilmesi, bu kadar yaygın kullanılmasının en büyük nedenlerinden biri.
JavaScript kodunun nasıl göründüğüne dair küçük bir tat:
Üç satır, üç fikir: bir değişken tanımla, yerleşik bir fonksiyon çağır, şablonlu bir string yazdır. Gerçek JavaScript kodunun her sayfasında bu üçünü birden göreceksin.
JavaScript nerede çalışır?
JavaScript aslında sadece bir dil belirtiminden (ECMAScript adıyla) ibarettir. Kodu gerçekten çalıştırabilmek için bir motora ihtiyacın var — yani kodunu okuyup yürüten bir program. Karşına çıkacak iki tanesi şunlar:
- Tarayıcılar. Chrome ve Edge V8 kullanıyor. Firefox SpiderMonkey'i, Safari ise JavaScriptCore'u tercih ediyor. Bir sayfa aç, F12'ye bas, Console sekmesine JavaScript yapıştır — anında çalışır.
- Node.js. V8'i tarayıcıdan çıkarıp dosya sistemine, ağa ve işletim sistemine erişim veriyor. Sunucu tarafında JavaScript'i mümkün kılan şey de bu zaten.
// Tarayıcı konsolunda çalıştırın:
document.title = "Yeni sekme başlığı";
// Node.js ile çalıştırın:
// $ node script.js
Tarayıcıdaki JavaScript sayfaya (yani DOM'a) erişebilir, ama dosya sisteminize dokunamaz. Node.js tarafındaki JavaScript ise dosya okuyabilir, soket açabilir; fakat elinde oynayacağı bir sayfa yoktur. Aynı dil, farklı süper güçler.
JavaScript ne işe yarar?
Kısa cevap: web'in değdiği hemen her şeye. Uzun cevabı ise kabaca karşınıza çıkma sırasına göre şöyle:
- Etkileşimli web sayfaları. Form doğrulama, açılır menüler, modallar, canlı arama, sürükle-bırak.
- Single-page uygulamalar. Gmail, Figma, Notion, Linear — tamamen JavaScript tarafından render edilip güncellenen uygulamalar; genellikle React, Vue ya da Svelte gibi bir framework üzerinden.
- Backend sunucular. Node.js, Express, Fastify veya NestJS ile yazılan REST API'ler, GraphQL uç noktaları ve gerçek zamanlı servisler.
- Build ve geliştirme araçları. Bundler'lar (Vite, esbuild, webpack), linter'lar (ESLint), test koşucuları (Vitest, Jest).
- Çapraz platform uygulamalar. Electron ile masaüstü uygulamaları (VS Code, Slack, Discord) ve React Native ile mobil uygulamalar.
İlk gün bunların hepsini bilmeniz gerekmiyor. Ama var olduklarını bilmek, "sadece JavaScript" lafının kulağa kısıtlayıcı gelmemesini sağlar.
JavaScript gerçekte nasıl çalışır?
Çok basitleştirilmiş bir zihin modeli: siz kaynak kodu yazıyorsunuz, motor bunu kendi iç temsiline ayrıştırıyor ve ardından çalıştırıyor. Modern JavaScript motorları JIT (just-in-time) derleme kullanır — önce kodu hızlıca yorumlamaya başlar, sonra sık çalışan sıcak yolları program çalışırken makine koduna çevirerek optimize eder.
JavaScript'i göndermeden önce bir binary'ye derlemezsiniz. Kaynak kodu doğrudan tarayıcıya (ya da Node'a) verirsiniz; gerisini motor halleder:
Bunu tarayıcı konsoluna yapıştırın ya da greet.js olarak kaydedip node greet.js komutuyla çalıştırın — sonuç aynı. Derleme adımı yok, build konfigürasyonu yok, bu kadar basit bir kod için kurulacak hiçbir şey de yok.
Java ve JavaScript farkı
İsimleri birbirine benziyor ama birbirleriyle alakaları yok. JavaScript, 1995'te o dönemde popüler olan Java'nın rüzgârından faydalanmak için bu ismi almış — yani tamamen pazarlama kararı. Ve bu karar o günden beri yeni başlayanların kafasını karıştırıyor.
| JavaScript | Java | |
|---|---|---|
| Tip sistemi | Dinamik | Statik |
| Çalıştığı yer | Tarayıcılar, Node.js | JVM |
| Paradigma | Çok paradigmalı, prototip tabanlı | Sınıf tabanlı OOP |
| Derleme | JIT, build adımı gerektirmez | Önce bytecode'a derlenir |
Biri size "Java öğrendim, demek ki JavaScript de biliyorum" diyorsa — hayır, bilmiyor. Bu ikisini, sadece dört harfi ortak olan tamamen ayrı diller olarak düşünün.
TypeScript ve JavaScript farkı
TypeScript, üzerine tip sistemi eklenmiş JavaScript'ten başka bir şey değil. Kodu tip anotasyonlarıyla yazıyorsunuz, TypeScript derleyicisi bunları kontrol ediyor ve ortaya JavaScript'in çalıştığı her yerde çalışabilen sade JavaScript kodu çıkıyor.
// JavaScript — türler örtüktür:
function add(a, b) {
return a + b;
}
// TypeScript — türler açıktır:
function add(a: number, b: number): number {
return a + b;
}
Her geçerli JavaScript dosyası aynı zamanda geçerli bir TypeScript dosyasıdır. Yani TypeScript bir rakip değil, JavaScript'in bir üst kümesidir (superset). Bugün büyük kod tabanlarının çoğu TypeScript kullanıyor, ama önce JavaScript öğrenmek doğru sıralama. TypeScript'in ne iş yaptığını anlamak için, onun tip eklediği şeyi, yani JavaScript'i anlamanız gerekir.
Kısa Bir Tarihçe: Garipliklerin Arka Planı
JavaScript, 1995'te Netscape'te Brendan Eich tarafından on günde yazıldı. Bu hikâye önemli çünkü dilin bazı pürüzleri (gevşek eşitlik, otomatik noktalı virgül ekleme, typeof null === "object") aşırı zaman baskısı altında verilmiş kararlardan kalma. Web'in geriye dönük uyumluluğunu bozmamak için de bu kararlar olduğu gibi donduruldu.
Dil ECMAScript adıyla standartlaştırılıyor ve her yıl yeni bir sürümü yayınlanıyor (ES2015 büyük dönüm noktasıydı — let, const, ok fonksiyonları, sınıflar, modüller hep o sürümle geldi). Birisi "ES6" ya da "modern JavaScript" dediğinde, kastettiği aşağı yukarı 2015 ve sonrasının artık her yerde desteklenen özellik kümesidir.
Modern JavaScript yazmak gerçekten keyifli. Eski kısımlar hâlâ duruyor olsa da, kurs boyunca değineceğimiz alışkanlıklarla bunların çoğundan kolayca kaçınabilirsiniz.
Öne Çıkanlar
- JavaScript her tarayıcıda, Node.js sayesinde de sunucularda çalışır.
- Web'in dokunduğu neredeyse her şeyde kullanılır — arayüz, backend, geliştirme araçları, hatta masaüstü ve mobil uygulamalar.
- Java ile aynı şey değildir. TypeScript ise statik tipler ekleyen bir üst kümedir.
- Dilin tarihsel bazı gariplikleri var; pratikte yazacağınız şey modern JavaScript (ES2015+) olacak.
Sırada: JavaScript'i Çalıştırmak
Teori yeter, artık biraz kod çalıştırma zamanı. Bir sonraki yazıda, yeni başlayan birinin JavaScript çalıştırabileceği üç yere bakacağız: tarayıcı konsolu, bir HTML dosyası ve komut satırında Node.js.
Sıkça Sorulan Sorular
Kısaca JavaScript nedir?
JavaScript, web tarayıcılarının içinde ve Node.js sayesinde sunucularda çalışan bir programlama dilidir. Web sayfalarını etkileşimli hâle getiren şey odur: tıklamalara tepki vermek, sayfayı yenilemeden içerik güncellemek, API'lerden veri çekmek... Tarayıcıda doğal olarak çalışan tek dildir.
JavaScript ne işe yarar?
Küçük arayüz işlerinden (dropdown menüler, form doğrulama) tam kapsamlı web uygulamalarına (Gmail, Figma, Notion) kadar her şeye. Ayrıca backend sunucular (Node.js, Deno), mobil uygulamalar (React Native), masaüstü uygulamaları (Electron ile VS Code) ve build araçları JavaScript ile yazılıyor. Tarayıcıda çalışan ya da web'le konuşan ne varsa işin içinde büyük ihtimalle JavaScript vardır.
JavaScript ile Java aynı şey mi?
Hayır — isimleri benziyor ama birbiriyle alakasız iki dil. Bu benzerlik tamamen eski bir pazarlama kararının sonucu. Java; statik tipli, sınıf tabanlı ve JVM üzerinde çalışan bir dildir. JavaScript ise dinamik tipli, tarayıcıda ve Node'da çalışır, tasarımı da çok farklıdır. Ortak yanları sadece ilk dört harf.
JavaScript ile TypeScript arasındaki fark nedir?
TypeScript, JavaScript'in üzerine tip sistemi eklenmiş hâli. Kodu tip bilgileriyle yazarsın, derleyici bunları kontrol eder ve çıktı olarak sade JavaScript üretir. Geçerli her JavaScript dosyası aynı zamanda geçerli bir TypeScript dosyasıdır. JavaScript öğrenmek için TypeScript'e ihtiyacın yok ama bugün büyük projelerin çoğu TypeScript kullanıyor.