İletişim

JavaScript Nedir?

Kısa tanım

JavaScript, web tarayıcılarının yerel olarak çalıştırdığı programlama dilidir; sayfalara etkileşim, dinamik içerik ve uygulama mantığı ekler. Dilin standardı ECMAScript (ECMA-262) adıyla Ecma International'ın TC39 komitesi tarafından geliştirilir ve her yıl yeni bir sürümü yayımlanır. Node.js gibi çalışma ortamları sayesinde sunucu uygulamaları, komut satırı araçları ve derleme süreçleri de JavaScript ile yazılabilir.

Diğer adları: JS, ECMAScript, ES6, Vanilla JS

JavaScript olay döngüsünü gösteren çevrim: çağrı yığını, Web API'leri, görev kuyruğu ve kuyruğu yığına aktaran döngü

Dil, standart ve çalışma ortamı

"JavaScript" denince aslında üç katman birlikte kastedilir. Birincisi dilin kendisidir: değişkenler, fonksiyonlar, nesneler, async/await, modüller. Bunlar ECMAScript standardında tanımlanır; TC39 komitesi her yıl Haziran'da yeni bir sürüm yayımlar ve Haziran 2026'da yayımlanan sürüm 17. baskıdır. Büyük değişikliklerin geldiği 2015 sürümü hâlâ "ES6" adıyla anılır.

İkinci katman çalışma ortamının sunduğu API'lerdir. DOM, fetch, localStorage veya zamanlayıcılar dilin parçası değildir; onları tarayıcı sağlar. Node.js ise dosya sistemi ve ağ sunucusu gibi farklı API'ler sunar. Bu ayrım, "sunucuda window neden tanımsız?" sorusunun cevabıdır. Üçüncü katman, dili hızlı çalıştıran motordur: Chrome'da V8, Firefox'ta SpiderMonkey, Safari'de JavaScriptCore.

Tarayıcıda nasıl çalışır?

Sayfadaki JavaScript, kullanıcı etkileşimlerini işleyen ve ekranı çizen ana iş parçacığında (main thread) çalışır. Bir betik çalışırken tarayıcı başka bir şey yapamaz; 50 milisaniyeyi aşan kesintisiz işlere uzun görev denir ve bu sırada yapılan bir tıklama ancak görev bitince işlenir. Gecikme, INP metriğinde doğrudan görünür.

<!-- HTML ayrıştırmasını durdurur -->
<script src="/eski.js"></script>

<!-- Paralel indirilir, HTML ayrıştırıldıktan sonra sırayla çalışır -->
<script src="/uygulama.js" defer></script>

<!-- Modül betikleri varsayılan olarak ertelenir -->
<script type="module" src="/main.js"></script>

Niteliksiz bir <script> etiketi, indirilip çalışana kadar HTML ayrıştırmasını durdurur. defer ve async bu beklemeyi kaldırır; aradaki fark, async betiklerin indirildiği anda ve sırasız çalışmasıdır.

Bayt bayt en pahalı kaynak

Aynı boyuttaki bir görsel ile bir JavaScript dosyası tarayıcıya aynı maliyeti çıkarmaz. Görsel çözülüp çizilir; JavaScript ise indirilir, ayrıştırılır, derlenir ve çalıştırılır, üstelik bunların çoğu ana iş parçacığını meşgul eder. Masaüstünde fark edilmeyen bir paket, orta segment bir Android telefonda saniyelerce sürebilir. Bu yüzden performans çalışmalarının önemli bir kısmı "daha az JavaScript göndermek" üzerine kuruludur: kullanılmayan kodu atmak, kodu rotalara göre parçalara bölmek, üçüncü taraf betikleri (analitik, sohbet, reklam) sorgulamak ve etkileşim gerektirmeyen içeriği düz HTML olarak bırakmak.

Arama motorları ve JavaScript

Google JavaScript'i güncel bir Chromium ile çalıştırabilir, ama bunu taramadan ayrı bir aşamada yapar ve her bot aynı yeteneğe sahip değildir. Ana içerik, başlıklar, iç bağlantılar ve meta etiketler ilk HTML yanıtında yer aldığında risk en aza iner. Bağlantıların href niteliği olan gerçek <a> öğeleri olması da önemlidir; yalnızca tıklama olayıyla çalışan öğeler güvenilir biçimde takip edilmez. Ayrıntılar JavaScript SEO maddesinde.

Ekosistemdeki yeri

React, Vue veya Svelte gibi kütüphaneler ve framework'ler JavaScript ile yazılır ve sonunda tarayıcıya JavaScript olarak ulaşır. TypeScript ise dile statik tipler ekleyen bir üst kümedir; tip bilgisi derleme sırasında silinir ve çalışan kod yine JavaScript'tir. Bu araçlardan hangisi seçilirse seçilsin, tarayıcının çalıştırdığı şeyin boyutu ve maliyeti aynı kurallara tabidir.

İlgili terimler

← Sözlüğe dön