ES8 nedir? ECMAScript 2017 nedir?

Bu yazıda ECMAScript 2017 olarak da bilinen ES8 ile birlikte gelen yenilikleri inceliyoruz.


ES8 nedir? ECMAScript 2017 nedir?

ES8 (ECMAScript 2017) Haziran 2017’de yayınlanan 8. ECMAScript sürümüdür.

ES8 ile yeni neler geldi ?

ES8 ile birlikte Javascript’e aşağıdaki yenilikler geldi?

  • string.protoype.padStart
  • string.prototype.padEnd
  • object.prototype.entries
  • object.prototype.values
  • object.getOwnPropertyDescriptors
  • trailing commas
  • asnyc/await

padStart()

padStart stringlerin başına istediğiniz karakteri belirli bir uzunluğa tamamlayacak şekilde ekliyor. padStart metodu iki parametre alıyor, ilki istenen uzunluk, ikincisi ise eklenecek string.

let amount='5';
console.log(amount.padStart(3,'0')) // 005

padEnd()

padStart’la benzer şekilde ve parametrelerle çalışan padEnd’in farkı belirtilen metni stringin sonuna ekliyor olması.

let str='abc';
console.str(amount.padStart(6,'.')) // abc...

Object.entries();

Object.entries() metodu kendisine verilen bir nesneyi, anahtar-değer ikilileri şeklinde array’lere dönüştürüyor.

const student = { id: 1, name:"john" };
const studentArray = Object.entries(myobject); 
console.log(studenArray); // Bu kodun çıktısı [ [ 'id', 1 ], [ 'name', 'john' ] ]

ES10 ile birlikte gelen Object.fromEntires() metodu ise bunun tam tersini yapıyordu.

Object.getOwnPropertyDescriptors()

Bir nesnenin tüm nitelik tanımlayıcılarını içeren bir nesne döndürür. Eğer nesnenin herhangi bir tanımlı niteliği yoksa boş nesne döndürür.

const object1 = {
  property1: 42
};

const descriptors1 = Object.getOwnPropertyDescriptors(object1);

console.log(descriptors1.property1.writable);  // true
console.log(descriptors1.property1.value);     // 42
console.log(descriptors1);
// property1: {value: 42, writable: true, enumerable: true, configurable: true}

Object.values

Bir nesnenin anahtarları değil, sadece bir array olarak döndürür.

const colors= { B : 'Blue', OR : "Orange", YE : "Yellow", PI : "Pink" };
console.log( Object.values(colors) ); //(4) ['Blue', 'Orange', 'Yellow', 'Pink']

Trailing Commas

ES5’e kadar bir array ya da listenin sonundaki virgül hata veriyordu, bu durum ES5’de hata olmaktan çıksa da fonksiyon tanımları ve fonksiyon çağırılarında parametreleri virgülle bitiremiyorduk. ES8 ile birlikte fonksiyon tanımları ve çağrılarında da trailing comma kullanımının önü açılmış oldu;

function sendMessage(message, email1, email2, );

Async/Await

Eskiden çağırdığımız asenkron fonksiyonlarda belirli olaylar gerçekleştiğinde belirli işlemleri yapmak için callback fonksiyonları göndermek zorundaydık. ES8 ile birlikte gelen async/await fonksiyonları asenkron işlemler için çok daha kullanışlı ve temiz bir çözüm getirdi.

async function anahtarı kelimeleri ile tanımladığımız fonksiyonlar bir AsyncFunction nesnesi döndürürler. Bu şekilde tanımlanmış bir fonksiyon çağırıldığında da bir Promise döndürür. Bir asenkron fonksiyon değer döndüreceği zaman bu Promise çözülür (resolve). Eğer bir hata gerçekleşirse Promise reddedilir (reject).

Asenkron bir fonksiyon await tanımlaması içerebilir. Bu tanım fonksiyonu durdurur ve Promise’in yanıt döndürmesini bekler ve yanıtı alınca asenkron fonksiyonun çalışmasına devam edilir.

function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('çözüldü');
    }, 2000);
  });
}

// Fonksiyonu asenkron olarak tanımlıyoruz.
async function asyncCall() {
  console.log('promise'i çağırıyoruz');
  // Promise tamamlanıp değer döndürülene kadar duraklıyor ve değer dönünce result sabitine atıyor.
  const result = await resolveAfter2Seconds();
  console.log(result);
  // beklenen çıktı: "çözüldü"
}

asyncCall();

// Kaynak: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
Bu Yazıda Yapılan Değişiklikler
  • 11.05.2022: Yazı özeti düzenlendi.

Bir soru, öneri ya da yorumunuz mu var?

Evren Bal

Ben Evren BAL

1996'dan beri ‘Internet canlısıyım!’

Evren Bal Hakkında daha fazla bilgi.

Tanışmak isterseniz hemen sosyal medyadan iletişime geçebilirsiniz.

Bana Ulaşın

Bana Ulaşın

  • Bir sorunuz mu var?
  • Yazıda bir hata mı farkettiniz?
  • Sayfa ile ilgili bir öneriniz mi var?
  • Yazmamı önereceğiniz bir konu mu var?

Lütfen iletişim formunu kullanarak veya sosyal medya hesaplarımdan bana ulaşın.

Digital Ocean Logo

VPS sunucusu denemek ister misiniz?

Digital Ocean'a referans bağlantımdan kayıt olarak yeni oluşturacağınız hesabınızı 60 gün geçerli 100$ kredi ile açabilirsiniz. Bu miktar yüksek performanslı VPS'leri bile denemeniz için yeterlidir.

Yapacağınız onca kurulumun boşa gitmemesi için benim tavsiyem uzun vadede kullanabileceğiniz özellik ve maliyetlerde bir sunucu oluşturmanızdır.

Ücretsiz 100$ kredi bağlantısı

60 günlük denemeniz sonunda eğer devam etmek istemezseniz hiç bir ücret ödemeyeceksiniz. Hizmeti kullanmaya devam etmek isterseniz harcamanız 25$'a ulaştığında benim hesabıma da 25$ kredi yüklenecektir.

Diğer bir deyişle, siz 100$ ücretsiz krediyi her halükarda kazanırken, daha sonra ücretli devam etmeye karar verirseniz ben de 25$ kredi kazanacağım.

Copyright © 2022 - Evren BAL