JavaScript, etkileşimli ve dinamik web uygulamaları oluşturmak için öncelikle kullanılan yüksek seviyeli, yorumlanan bir programlama dilidir. HTML ve CSS ile birlikte web geliştirme için temel bir parçadır. Brendan Eich tarafından Netscape'te çalışırken geliştirilen JavaScript, olay odaklı, fonksiyonel ve imperatif programlama stillerini destekleyen çok yönlü bir dil haline gelmiştir. Artık geniş bir ekosisteme sahip web teknolojilerinin ayrılmaz bir parçasıdır; bu ekosistem, en dikkat çekici olanı Node.js olmak üzere birçok çerçeve, kütüphane ve çalışma zamanı ortamını kapsamaktadır.
JavaScript, 1995 yılında Mocha adıyla yaratılmış, daha sonra LiveScript olarak yeniden adlandırılmış ve sonunda Java'nın popülaritesinden yararlanmak için JavaScript olarak adlandırılmıştır. İlk versiyonu Netscape Navigator 2.0'da yayımlanmış ve geliştiricilerin web sayfalarına dinamik içerik eklemesine olanak tanımıştır. Dil, 1997 yılında Avrupa Bilgisayar Üreticileri Derneği (ECMA) tarafından ECMAScript olarak standartlaştırılmış ve sonraki versiyonlar, yeteneklerini genişleten önemli özellikler sunmuştur.
JavaScript'in evrimi, nesne yönelimli programlama ve asenkron programlama (sözler ve geri çağırmalar) gibi özelliklerin tanıtımını içermektedir. Özellikle, ECMAScript 5 (2009) "katı mod"u, JSON desteği ve geliştirilmiş dizi yöntemlerini tanıtırken, ECMAScript 6 (2015), ES6 veya ECMAScript 2015 olarak da bilinir, ok fonksiyonları, sınıflar ve modüller gibi önemli değişiklikler getirmiştir. ES6'nın yayımlanması, JavaScript'i büyük ölçekli uygulama geliştirme için daha sağlam bir dil haline getiren bir paradigma değişikliğini işaret etmiştir.
Bugün, JavaScript web geliştirmede her yerde bulunmaktadır; React, Angular ve Vue.js gibi ön uç çerçeveleri güçlendirirken, Node.js aracılığıyla arka uç geliştirmeyi de desteklemektedir. Dil, her yıl ECMAScript'in yeni sürümleri ile evrimini sürdürmekte ve yeni özellikler ve iyileştirmeler sunmaktadır. JavaScript'in mobil uygulama geliştirme, masaüstü uygulamaları (Electron kullanarak) ve hatta kurumsal düzeyde uygulamalardaki artan kullanımı ile yazılım geliştirme alanındaki önemi ve geçerliliği güçlü kalmaktadır.
JavaScript, değişkenlerin açık bir tip beyanı olmaksızın herhangi bir türde değer tutmasına olanak tanıyan dinamik bir tip dilidir.
let example = "Merhaba, Dünya!";
example = 42; // Hata yok, example tür değiştirebilir
JavaScript'teki fonksiyonlar birinci sınıf vatandaşlardır; bu, onların değişkenlere atanabileceği, argüman olarak geçirilebileceği ve diğer fonksiyonlardan döndürülebileceği anlamına gelir.
const greet = function(name) {
return `Merhaba, ${name}`;
};
console.log(greet("Alice")); // Çıktı: Merhaba, Alice
ES6'da tanıtılan ok fonksiyonları, fonksiyon yazmak için daha özlü bir sözdizimi sağlar ve kendi this
bağlamlarını bağlamazlar.
const add = (a, b) => a + b;
console.log(add(2, 3)); // Çıktı: 5
Sözler, gelecekte mevcut olabilecek bir değeri temsil ederek asenkron programlamayı basitleştirir.
const fetchData = () => {
return new Promise((resolve, reject) => {
// bir API çağrısını simüle et
setTimeout(() => resolve("Veri alındı!"), 1000);
});
};
fetchData().then(data => console.log(data)); // 1 saniye sonra çıktı: Veri alındı!
Şablon literalleri, kolay dize interpolasyonu ve çok satırlı dizeler için olanak tanır.
const name = "Alice";
const greeting = `Merhaba, ${name}!`;
console.log(greeting); // Çıktı: Merhaba, Alice!
Yapılandırma ataması, dizilerden veya nesnelerden değerlerin çıkarılmasını basitleştirir.
const person = { name: "Alice", age: 25 };
const { name, age } = person;
console.log(name, age); // Çıktı: Alice 25
Yayılma operatörü (...
), bir yinelemeli yapıdan elemanları genişletmeye olanak tanırken, dinleme operatörü kalan elemanları bir diziye toplar.
const numbers = [1, 2, 3];
const moreNumbers = [...numbers, 4, 5]; // Çıktı: [1, 2, 3, 4, 5]
const sum = (...args) => args.reduce((a, b) => a + b, 0);
console.log(sum(1, 2, 3)); // Çıktı: 6
JavaScript, ES6'da tanıtılan class
sözdizimi ile sınıf tabanlı nesne yönelimli programlamayı destekler.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} ses çıkarıyor.`);
}
}
const dog = new Animal("Köpek");
dog.speak(); // Çıktı: Köpek ses çıkarıyor.
JavaScript, import
ve export
anahtar kelimelerini kullanan ES6 modülleri aracılığıyla modüler programlamayı destekler.
// module.js
export const name = "Alice";
export function greet() {
console.log("Merhaba!");
}
// main.js
import { name, greet } from './module.js';
console.log(name); // Çıktı: Alice
greet(); // Çıktı: Merhaba!
Async/await sözdizimi, sözlerle çalışmayı basitleştirir ve asenkron kodun daha senkron görünmesini sağlar.
const fetchData = async () => {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return data;
};
fetchData().then(data => console.log(data));
JavaScript, V8 (Chrome) ve SpiderMonkey (Firefox) gibi tarayıcı motorlarıyla birlikte çeşitli ortamlarda çalışır. Node.js, JavaScript'in sunucu tarafında çalıştırılmasına olanak tanır ve geliştiricilerin hem istemci hem de sunucu tarafında birleşik bir dil ile tam teşekküllü web uygulamaları oluşturmasını sağlar.
JavaScript için yaygın IDE'ler ve kod editörleri arasında Visual Studio Code, WebStorm, Atom ve Sublime Text bulunmaktadır. Bu araçlar, sözdizimi vurgulama, akıllı kod tamamlama ve hata ayıklama desteği gibi özellikler sunar.
JavaScript projesi kurmak için geliştiriciler genellikle bağımlılıkları yönetmek için npm veya yarn gibi paket yöneticileri kullanır. Tipik bir proje yapısı, web arayüzü için bir index.html
dosyası, ana JavaScript dosyası (genellikle main.js
) ve muhtemelen paketleri yönetmek için bir package.json
dosyası içerir.
npm init -y # Varsayılan ayarlarla yeni bir JavaScript projesi başlatır
npm install express # Express çerçevesini yükler
JavaScript, aşağıdakiler de dahil olmak üzere çok sayıda uygulamada kullanılmaktadır:
JavaScript'in ana rakipleri ve alternatifleri şunlardır:
Her dil, bir projenin veya uygulamanın belirli ihtiyaçlarına bağlı olarak kendi güçlü ve zayıf yönlerine sahiptir.
JavaScript kodunu diğer dillere veya tersine çevirmek için Babel (modern JavaScript'i eski sürümlere dönüştürmek için) veya TypeScript (tip kontrolü ve JavaScript'e dönüştürme için) gibi araçlar kullanılabilir. jQuery gibi kütüphaneler de farklı ortamlarda DOM manipülasyonu için tutarlı bir API sağlayarak yardımcı olabilir.
Babel ve TypeScript'in yanı sıra, JavaScript kodunu çevirmeye veya dönüştürmeye yardımcı olabilecek diğer araçlar şunlardır: