Modern JavaScript, web geliştirme ve uygulama geliştirme süreçlerinde yaygın olarak kullanılan bir programlama dilidir. ECMAScript (ES), JavaScript’in standartlarını tanımlayan bir belirleme ve standartlaştırma kuruluşudur. ES6 veya ECMAScript 2015, JavaScript’in önemli bir güncellemesidir ve JavaScript’in temel yapısını, sözdizimini ve özelliklerini önemli ölçüde geliştirmiştir. Sonraki sürümlerle birlikte ES6+’a ek olarak yeni özellikler eklenmiştir.
ES6 ve sonrasında eklenen bazı önemli özellikler
- Let ve Const Değişkenleri:
let
veconst
anahtar kelimeleriyle değişken tanımlama artık mümkündür. Bunlar blok kapsamlıdır vevar
anahtar kelimesinin yerine kullanılabilir.
let x = 5; const PI = 3.14;
- Arrow Functions (Ok Fonksiyonları): Kısa ve okunabilir fonksiyon tanımlamaları için arrow (ok) fonksiyonları kullanılır.
const func = (param1, param2) => { return param1 + param2; };
- Template Literals (Şablon Dizgeleri): Değişkenleri veya ifadeleri dize içinde yerleştirmek için daha kolay bir yol sunar.
const name = 'John'; console.log(`Hello, ${name}!`);
- Destructuring (Yapı Bozma): Nesneleri veya dizileri parçalara ayırarak, içlerindeki değerlere kolayca erişim sağlar.
const person = { name: 'John', age: 30 }; const { name, age } = person; console.log(name, age);
- Spread ve Rest Operatörleri: Dizileri veya nesneleri açmak veya birleştirmek için kullanılır.
const arr = [1, 2, 3]; const newArr = [...arr, 4, 5, 6]; const sum = (...args) => args.reduce((acc, val) => acc + val, 0); console.log(sum(1, 2, 3, 4)); // çıktı: 10
- Class ve Miras (Inheritance): ES6 ile birlikte sınıflar daha kolay bir şekilde tanımlanabilir ve kalıtım alınabilir.
class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } } class Dog extends Animal { speak() { console.log(this.name + ' barks.'); } } const dog = new Dog('Rex'); dog.speak(); // çıktı: Rex barks.
Bu, sadece ES6’nın birkaç özelliğini ve modern JavaScript’in bazı özelliklerini içeriyor. ES6+’a ek olarak, daha sonraki sürümlerde async/await, Promise.allSettled, Nullish Coalescing Operator (??
), Optional Chaining (?.
), ve daha birçok özellik gibi daha fazla özellik eklenmiştir. Bu özellikler, geliştiricilere daha temiz, okunabilir ve verimli kod yazma imkanı sağlar.
ES6 ek özellikleri
- Async/Await: Asenkron işlemleri daha okunabilir ve yönetilebilir hale getiren bir sentaks ekler.
async
fonksiyonlar asenkron bir şekilde çalışırken,await
ifadesi, bir asenkron işlemin tamamlanmasını beklemek için kullanılır.
async function fetchData() { const response = await fetch('https://api.example.com/data'); const data = await response.json(); return data; }
- Promise.allSettled: Tüm promise’lerin tamamlandığını beklemek için kullanılır, ancak bazıları başarısız olsa bile bekler. Sonuçlar, her promise için bir nesne içinde döndürülür.
const promises = [ fetch('https://api.example.com/data1'), fetch('https://api.example.com/data2'), ]; Promise.allSettled(promises) .then(results => { results.forEach(result => { if (result.status === 'fulfilled') { console.log('Success:', result.value); } else { console.log('Error:', result.reason); } }); });
- Nullish Coalescing Operator (??):
null
veyaundefined
gibi “boş” değerleri kontrol eder ve bir alternatif değeri sağlar.
const username = null; const displayName = username ?? 'Guest'; console.log(displayName); // çıktı: Guest
- Optional Chaining (?.): Nesne zincirlemelerinde belirli bir özelliğin veya yöntemin varlığını kontrol eder ve zinciri keser.
const user = { name: 'John', address: { city: 'New York' } }; console.log(user.address?.city); // çıktı: New York console.log(user.address?.zipcode?.toString()); // çıktı: undefined
- Private Class Fields: Sınıf tanımlamalarında private alanları tanımlamak için kullanılır.
class Example { #privateField; constructor() { this.#privateField = 42; } getPrivateField() { return this.#privateField; } } const instance = new Example(); console.log(instance.getPrivateField()); // çıktı: 42 console.log(instance.#privateField); // Hata: Erişim izni yok
Bu özellikler, JavaScript geliştiricilerine daha güçlü ve esnek bir dil sunar, daha temiz ve daha etkili kod yazmalarına olanak tanır.