ES12 nedir? ECMAScript 2021 nedir?

ECMAscript, kısa adıyla ES, Ecma-International tarafından ECMA-262 dokümanında yayınlanan ve her yıl yenilenen JavaScript standartıdır. Asıl amacı javascript için bir standart geliştirerek tüm tarayıcılarda çalışabilen kodlar yazılmasına olanak vermektir. (Ah neydi o Internet Explorer günleri, her browsera ayrı kod yazardık) Bununla birlikte Node.Js gibi sunucu tabanlı motorlarda ECMAScript’le uyum göstermektedir.

ES12 (ESCMAScript 2021) Haziran 2021’de yayınlanan 12. EcmaScript sürümüdür.

ES 12 ile gelen yenilikler

ES 12 ile birlikte tanımlanan yeni özellikler şunlar;

  • String.prototype.replaceAll()
  • Promise.any
  • WeakRef
  • &&=, ||= ve ??= operatörleri
  • Numeric separators

String.prototype.replaceAll()

replaceAll metodu inanılmaz büyük bir yenilik değil fakat sizi regular expressionlar kullanmaktan kurtaracak basit bir ekleme. İsminden de anlaşılabileceği gibi bu metot ile bir string içerisinde aradığınız bir alt stringi bulunduğu her konumda başka bir stringle değiştirebilirsiniz. Örnekle incelersek;

// Tüm x'leri e ile değiştirelim
// xvrxnbal evrenbal haline dönüşecektir.
'xvrxnbal'.replaceAll('x', 'e');

Promise.any

ES 12 ile birlikte yeni bir Promise metodu – Promise.any – geldi. Bu metod birden fazla pormise’i alıp, herhangi biri çözümlendiğinde çözümlenmiş kabul ediliyor. Örnekle incelersek;

try {

    // Promise.any metoduna array içerisinde birden fazla promise gönderiyoruz.
    const firstPromiseResolved = Promise.any(promisesArray);

    // promiselerden herhangi biri çözüldüğünde kodun bu bölümü çalışır
catch(e) {
   // hata oluşursa burası çalışacak
}

Promise.any() Promise’lerden hiç biri çözümlenmezse AggregateError hatası fırlatır. (Catch blogunda hatayı yakalayıp işlem yapabiliriz)

WeakRef

WeakRef, Weak References (zayıf referanslar) için bir kısa yol ve amacı diğer bir nesneye ait zayıf referans tutmak. Normalde başka bir nesnenin referans gösterdiği nesneler ‘garbage collector’ tarafından temizlenmezken, weakref tipinde bir referans varsa garbage collector bu referansı temizleyebiliyor. Zayıf bağlantı kurduğunuz bir nesne, varsa başka bir nesne ile güçlü bağlantısını kaybettikten sonra her a temizlenebilir (veya uzun süre temizlenmeden kalabilir.) Javascript motorlarının garbage collection algoritmaları farklı çalıştığından veya aynı motorun bir sonraki versiyonunda değişebileceğinden davranışın nasıl olacağını kestirmek son derece güçtür. Bu nedenle Ecma mümkünse WeakReference kullanımından kaçınmanızı öneriyor. Her şeye rağmen WeakRef kullanmak isterseniz şöyle kullanabilirsiniz;

const largeObject = new WeakRef({
     name: "CacheMechanism",
     type: "Cache",
});

largeObject.deref();
largeObject.deref().name;
largeObject.deref().type;

Mantıksal Atama Operatörleri (Logical Assignment Operators)

ES12 ile birlikte üç yeni mantıksal atama operatörü geldi, bunlar &&=, ||= ve ??= . Bu opereatörler sayesinde bir değişkene değer atarken mantıksal ifadeler kullanabiliyoruz. Örneklerle inceleyelim;

ES12 &&= Operatörü

let number1 = 10;
let number2 = 15;

number1 &&= number2;

Bu kodu bu operatör olmadan önce şöyle yazmamız gerekiyordu

let number1 = 10;
let number2 = 15;

if (number1) {
    number1 = number2
}

Özetle soldaki değişkenin değeri true döndürüyorsa, sağdaki değişkenin değerini soldakine atıyoruz.

ES12 ||= Operatörü

let number1 = null
let number2 = 15;

number1 ||= number2;

Bu kodu bu operatör olmadan önce şöyle yazmamız gerekiyordu

let number1 = null
let number2 = 15;

if (!number1) {
    number1 = number2
}

Bir önceki örneğin aksine, soldaki değişken false ise sağdaki değişkenin değerini soldaki değişkene atıyoruz.

ES12 ??= Operatörü

let number1 = null
let number2 = 15;

number1 ??= number2;

Bu kodu bu operatör olmadan önce şöyle yazmamız gerekiyordu

let number1 = null
let number2 = 15;

if (number1 == null || number1 == undefined) {
    number1 = number2
}

Bu operatör soldaki değişken null veya tanımsız ise sağdaki değişkenin değerini soldakine atıyor. Bir önceki operatörde kontrol yalnızca false değerine karşı çalışırken, bu operatörün sadece null veya undefined için çalıştığına dikkat edin.

Nümerik Ayraçlar (Numeric Separators)

Büyük sayılarla çalışmak genelde zordur. Kod içerisinde 123456789473 şeklinde bir sayı gördüğünüzde bunun büyüklüğünü algılamak zor olur. ES12 ile birlikte bu tarz büyük sayılar için ayraç kullanma şansına sahip olduk. Aynı sayıyı 123_456_789_473 şeklinde yazabiliyoruz. Böylece 123 milyar, 456 milyon ….. şeklinde bir sayıyla muhattap olduğumuzu anlamak çok daha kolay oluyor.

// ES12'den önce
const number = 123456789473;

// ES12'den sonra
const number = 123_456_789_473;

ECMAScript sürümlerindeki yenilikler nelerdi?

ES12 – ECMAScript 2021 neler getirdi?
ES11 – ECMAScript 2020 neler getirdi?
ES10 – ECMAScript 2019 neler getirdi?
ES9 – ECMAScript 2018 neler getirdi?
ES8 – ECMAScript 2017 neler getirdi?
ES7 – ECMAScript 2016 neler getirdi?
ES6 – ECMAScript 2015 neler getirdi?
ES5 – ECMAScript 5 neler getirdi?

Bu yazıyı beğendiniz mi?
Beğen
Bana sosyal medya hesaplarımdan ulaşın

Evren Bal

Merhaba Dünya. Teknoloji delisi, farklı düşünmeyi seven, 1996'dan beri Internet canlısı, garajdan başarı hikayesi çıkartmayı becerememiş, çünkü garajdan hiç çıkmayan bir insanım. :) Bana buradan veya sosyal medyadan ulaşmanızı, birlikte her konuda fikir alışverişi ve beyin jimnastiği yapmayı heyecanla bekliyorum.

3 Yanıt

  1. 19 Ekim 2021

    […] ile birlikt egelen Promise.Any metodunu da incelemenizi […]

  2. 19 Ekim 2021

    […] ES12 ve ES11‘den sonra ES10’da gelen yenilikleri de incelemiş olduk. Yazı dizimiz ES5’e kadar devam edecek. […]

  3. 19 Ekim 2021

    […] yazı dizisindeki ES12, ES11, ES10 ve ES9’u bitirdik, bundan sonraki yazıda ES8 ile devam […]

Soru ve Önerileriniz?

%d blogcu bunu beğendi: