deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

2026'da JavaScript: şimdi öğrenmeye değer ECMAScript 2025 özellikleri

Hacker News'in ana sayfasına çıkan bir derleme, lazy iterator helper'lardan set metotlarına ve RegExp.escape ile import attribute'lara kadar JavaScript'in 2026'daki durumunu inceliyor.

2026'da JavaScript: şimdi öğrenmeye değer ECMAScript 2025 özellikleri

Dilin durum raporu

blog.master.dev'de yayımlanan ve Eylül 2026'nın sonunda Hacker News'in ana sayfasına taşınan "What to Know in JavaScript (2026 Edition)" başlıklı bir genel bakış yazısı, JavaScript çalışanların radarında neler olması gerektiğini ele alıyor. Yazar, dili öngörülebilir bir yıllık takvimle sürümlenen bir dil olarak çerçevelerken, JavaScript'te çalışmanın çekirdek dilin çok ötesine — runtime'lara, framework'lere, kütüphanelere ve araçlara — uzandığını da kabul ediyor. Dolaşıma giren metin dil katmanına odaklanıyor, Haziran 2025'te tamamlanan ECMAScript 2025'in öne çıkan özelliklerini tek tek ele alıyor ve listenin eksiksiz olmadığı notuyla kapanıyor.

Iterator helper'lar zincirlere lazy evaluation getiriyor

Yazıya göre ECMAScript 2025, .map(), .filter(), .take() ve .drop() gibi metotları doğrudan iterator'lara ekliyor ve bunlar tembel (lazy) biçimde değerlendiriliyor. Kendini büyük ölçüde front-end geliştiricisi olarak tanımlayan yazar, özelliğin ilk bakışta anlaşılmaz görünebileceğini kabul ediyor — dizilerin bu metotları zaten var — ama performans tarafına işaret ediyor: dizi metotlarını zincirlemek her adımda yeni bir dizi tahsis eder ve bu, büyük koleksiyonlarda maliyetlidir. Yeni helper'larla Iterator.from() üzerinden kurulan bir zincir ara tahsis yapmaz ve yeterli sonuç üretildiğinde (örneğin take(3) sonrasında) hesaplamayı durdurur. Ek bir fayda da Iterator.from()'un yinelenebilir her şeyi kabul etmesi; böylece set'ler, map'ler ve generator'ler aynı araç setini kazanıyor.

Set'ler nihayet küme teorisine kavuşuyor

Yazı ayrıca iki set üzerinde aynı anda çalışan yeni Set metotlarını öne çıkarıyor: intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf ve isDisjointFrom. Yazar bir beceri eşleştirme örneğiyle gösteriyor: artık tek bir çağrı, hangi gereksinimlerin mevcut beceri setiyle örtüştüğü ve hangilerinin eksik olduğu gibi soruları yanıtlayabiliyor. Bu tür işlemler daha önce elle filtreleme ya da bir yardımcı kütüphane gerektiriyordu.

Uzun süredir beklenen iki regex iyileştirmesi

Düzenli ifadeler iki güncelleme alıyor. İlki RegExp.escape(); yazıya göre bu, yaklaşık 15 yıllık bir çabanın sonunda geldi. Kullanıcının yazdığı arama metnini bir regex'e gömme sorununu çözüyor: $ gibi karakterler desenlerde özel anlamlıdır ve RegExp.escape() bunları güvenle etkisizleştirir; böylece bir fiyat dizesi gibi bir sorgu bozulmadan derlenebilir. İkincisi, grup başına inline modifier'lar: büyük/küçük harf duyarsızlığını tüm ifadeye i bayrağıyla uygulamak yerine yalnızca desenin bir bölümüne uygulanabilmesini sağlıyor.

Promise.try iki hata yolunu birleştiriyor

Asenkron kod tarafında yazı, senkron olarak throw eden ya da asenkron olarak reject eden fonksiyonların ele alınmasını basitleştiren Promise.try()'ı inceliyor. Önceden bu durumlar bir try/catch artı ayrı bir .catch() gerektiriyordu; çağrıyı Promise.try() içine sarmak her iki hata modunu tek bir .catch()'e yönlendiriyor.

Import attribute'lar, uyarılarla birlikte

Yazar import attribute'ları kişisel favorisi olarak nitelendiriyor, özellikle CSS'i bileşenlerle birlikte import etmek için — with { type: "css" } ile yüklenen bir stylesheet, adoptedStyleSheets aracılığıyla bir web bileşeninin shadow root'una bağlanabiliyor ve stiller bileşen kodunun yanında gerçek CSS dosyalarında kalabiliyor.

JSON import'ları daha temkinli bir dille ele alınıyor. Yazı, Jake Archibald'ın JSON import etmek ile fetch etmek üzerine yazılarındaki uyarıları aktarıyor: başarısız bir JSON import'u tüm modül grafiğini birlikte çökertebilir; dinamik bir import() hatayı yakalayabilir ama fetch() kadar yararlı veri döndürmez; ayrıca import edilen veri, garbage-collectible hale gelmek yerine sayfanın ömrü boyunca modül grafiğinde kalır. Yazarın vardığı sonuç: dikkatli ilerlemek gerektiği.

Neden önemli

JavaScript'in yıllık sürüm ritmi, özelliklerin istikrarlı ama sessizce gelmesi anlamına geliyor ve birçok geliştiricinin alışkanlıkları birkaç sürüm öncesinden kalma. Bu derleme bir denetim listesi olarak yararlı: iterator helper'lar veri yoğun kodda bellek baskısını azaltıyor, yeni Set metotları ve RegExp.escape() elle yazılan boilerplate'in ve ince hataların yaygın kaynaklarını ortadan kaldırıyor, Promise.try() hata yönetimini düzenliyor. En az bunun kadar önemlisi, yazının yeni sözdizimine doğru tavırı örneklemesi — JSON import tartışmasının gösterdiği gibi, coşkuyu hata ve bellek semantiğini kontrol etmeyle dengelemek. Bir dil özelliğini benimsemek yalnızca çağrı noktasındaki kolaylıkla ilgili değil; hataların nasıl yayıldığını ve verinin bellekte ne kadar süre yaşayacağını da değiştiriyor.

  • #javascript
  • #ecmascript
  • #es2025
  • #web-standards
  • #regex