JavaScript, modern web geliştirme dünyasının temel taşıdır ve sürekli gelişen bir dildir. JavaScript'in versiyonları (ECMAScript standartları) arasında önemli farklar bulunmaktadır. Bu yazıda, ES5, ES6 ve ES7+ arasındaki farkları inceleyeceğiz.
ECMAScript 5 (ES5)
ES5, 2009 yılında tanıtıldı ve JavaScript için büyük bir adım oldu. ES5'in sunduğu başlıca özellikler şunlardır:
Önemli Özellikler
-
Strict Mode (Katı Mod):
- Kodun daha güvenli yazılmasını sağlar.
- Bazı hatalı uygulamaların önüne geçer.
'use strict'; x = 3.14; // Hata: Değişken tanımlanmadan atanamaz.
-
Array Methods (Dizi Metodları):
forEach
,map
,filter
,reduce
,some
,every
gibi fonksiyonlar tanıtıldı.
const numbers = [1, 2, 3, 4]; const doubled = numbers.map(num => num * 2); console.log(doubled); // [2, 4, 6, 8]
-
JSON Desteği:
- JSON.parse() ve JSON.stringify() metodları eklendi.
-
Object Methods (Nesne Metodları):
Object.keys()
,Object.create()
gibi metodlar tanıtıldı.
ECMAScript 6 (ES6 / ES2015)
ES6, JavaScript'in devrimsel bir güncellemesidir ve 2015 yılında yayımlanmıştır. Modern JavaScript'in temelini oluşturur.
Önemli Özellikler
-
Let ve Const:
let
veconst
, değişken tanımlamadavar
yerine kullanılır.
let age = 25; const name = 'Ahmet';
-
Arrow Functions:
- Daha kısa ve bağlamı koruyan fonksiyon ifadeleri.
const add = (a, b) => a + b;
-
Template Literals:
- Dinamik metinler oluşturmak için backtick (`) kullanılır.
const greeting = `Merhaba, ${name}!`;
-
Classes (Sınıflar):
- Nesne tabanlı programlama için ES6 sınıfları tanıtıldı.
class Person { constructor(name) { this.name = name; } greet() { console.log(`Hello, ${this.name}`); } }
-
Destructuring (Parçalama):
- Dizi ve nesnelerden değerleri kolayca çıkarma.
const [a, b] = [1, 2]; const {name, age} = person;
-
Modules (Modüller):
import
veexport
anahtar kelimeleriyle modüler yapı.
import { add } from './math'; export const multiply = (a, b) => a * b;
ECMAScript 7+ (ES7 ve Sonrası)
ES7 ve sonrası yıllık güncellemelerle JavaScript'i geliştirmeye devam etti. Öne çıkan özellikler şunlardır:
ES7 (2016)
-
Array.prototype.includes:
- Dizide bir elemanın olup olmadığını kontrol eder.
const items = [1, 2, 3]; console.log(items.includes(2)); // true
-
Exponentiation Operator (Üs Alma Operatörü):
**
operatörü eklendi.
console.log(2 ** 3); // 8
ES8 (2017)
-
Async/Await:
- Asenkron kod yazmayı kolaylaştırır.
async function fetchData() { const data = await fetch('https://api.example.com'); console.log(data); }
-
Object.entries ve Object.values:
- Nesneler üzerinde işlem yapmak için yeni metodlar.
const obj = {a: 1, b: 2}; console.log(Object.values(obj)); // [1, 2]
ES9 ve Sonrası
- Ekstra özellikler her yıl ekleniyor, örneğin:
Optional Chaining
(obj?.property
),Nullish Coalescing
(value ?? defaultValue
),BigInt
desteği.
Sonuç
JavaScript, her yeni ECMAScript sürümüyle geliştiricilere daha güçlü araçlar sunuyor. ES5, eski tarayıcılar için temel özellikler sağlarken, ES6 ve sonrası modern geliştirme ihtiyaçlarını karşılıyor. Bu standartları öğrenmek, daha hızlı ve etkili kod yazmanızı sağlar.