ECMAScript 2019
JavaScript sürüm numaraları
Eski JS sürümleri rakamsal adlandırılıyor: ES5 (2009) ve ES6 (2015).
2016 yılından itibaren sürümler yıllara göre adlandırılıyor: ECMAScript 2016, 2017, 2018, 2019, ...
ES2019'daki yeni özellikler:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- İsteğe Bağlı catch Bağlama
- Array.flat()
- Array.flatMap()
- Yeniden düzenlenmiş Array.Sort()
- Yeniden Düzenlenmiş JSON.stringify()
- Dize metinlerinde izin verilen ayırıcılar
- Yeniden düzenlenmiş Function.toString()
Uyarı
Bu özellikler nispeten yeni.
Daha eski tarayıcılar için alternatif kod (Polyfill) gerekebilir
JavaScript Dizgi Metodu trimStart()
ES2019, JavaScript'e String yöntemi ekledi trimStart()
。
trimStart()
Yöntemin çalışma şekli trim()
Benzer, ancak sadece dize başındaki boşlukları siler.
Örnek
text1 = " Hello World! "; text2 = text1.trimStart();
2020 yılının Ocak ayından beri tüm modern tarayıcılar JavaScript String trimStart() destekliyor:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
2018 Nisan | 2020 Ocak | 2018 Haziran | 2018 Eylül | 2018 Mayıs |
JavaScript Dizgi Metodu trimEnd()
ES2019, JavaScript'e trimEnd()
dize yöntemleri ile
trimEnd()
Yöntemin çalışma şekli trim()
Benzer, ancak sadece dize sonundaki boşlukları siler.
Örnek
text1 = " Hello World! "; text2 = text1.trimEnd();
2020 Ocak'tan beri tüm modern tarayıcılar JavaScript String trimEnd() desteği sağlar:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
2018 Nisan | 2020 Ocak | 2018 Haziran | 2018 Eylül | 2018 Mayıs |
JavaScript Nesne Metodu fromEntries()
ES2019, JavaScript'e fromEntries()
Nesne yöntemleri.
fromEntries()
Yöntem, döndürülebilir anahtar/değer çiftlerinden nesne oluşturur.
Örnek
const fruits = [ ["armut", 300], ["armut", 900], ["elma", 500] ]; const myObj = Object.fromEntries(fruits);
2020 Ocak'tan beri tüm modern tarayıcılar JavaScript Object fromEntries() desteği sağlar:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
2019 Mart | 2020 Ocak | 2018 Ekim | 2019 Mart | 2019 Nisan |
İsteğe Bağlı catch Bağlama
ES2019'dan itibaren, gerekirse catch parametresini atlayabilirsiniz:
Örnek
2019'dan önce:
try { // kod catch (err) { // kod }
2019'dan sonra:
try { // kod catch { // kod }
2020 Ocak'tan beri tüm modern tarayıcılar seçmeli catch bağlamını destekler:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
2018 Nisan | 2020 Ocak | 2018 Ocak | 2018 Mart | 2018 Mayıs |
JavaScript Dizi Metodu flat()
ES2019, JavaScript'e flat()
Dizi yöntemleri.
flat()
Yöntem, iç içe dizileri düzleştirerek yeni diziyi oluşturur.
Örnek
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
2020 Ocak'tan beri tüm modern tarayıcılar JavaScript Array flat() desteği sağlar:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
2018 Eylül | 2020 Ocak | 2018 Eylül | 2018 Eylül | 2018 Eylül |
JavaScript Dizi Metodu flatMap()
ES2019, JavaScript'e flatMap()
Dizi yöntemleri.
flatMap()
Yöntem öncelikle dizinin tüm elemanlarını haritalar, ardından yeni diziyi oluşturmak için diziyi düzleştirir.
Örnek
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Stabil Dizi Metodu sort()
ES2019 RevizyonArray.sort() yöntemi.
2019 öncesinde, QuickSort gibi istikrarsız sıralama algoritmalarının kullanılması izin verilirdi.
ES2019 sonrası, tarayıcıların istikrarlı sıralama algoritmaları kullanması gerekmektedir:
Bir değere göre elemanları sıralarken, bu elemanlar, aynı değere sahip diğer elemanlarla aynı nispi konumları korumalıdır.
Örnek
const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ];
Yukarıdaki örnekte, fiyat sıralaması yapıldığında, sonuçların diğer nispi konumlarda adların görünmesine izin verilmez, aşağıdaki gibi:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Yeniden Düzenlenmiş JSON.stringify()
ES2019 RevizyonJSON.stringify() yöntemi.
2019 öncesinde, JSON, \ kodlaması kullanılan karakterleri dizeleştiremedi.
Örnek
let text = JSON.stringify("\u26D4");
ES2019 öncesinde, UTF-8 kod noktası (U+D800 ile U+DFFF) üzerinde JSON.stringify() kullanımı, zararlı Unicode karakterleri döndürebilir, örneğin ���.
Bu revizyondan sonra, UTF-8 kod noktasına sahip dizgeler JSON.stringify() ile güvenli bir şekilde dönüştürülebilir ve JSON.parse() ile orijinal dizgeye geri getirilebilir.
Ayırıcı İşaret
şimdi, dizi metinlerinde satır ayırıcı ve paragraf ayırıcı işaretleri kullanılmaya izinleniyor (\u2028
ve \u2029
)
2019 öncesinde, bu işaretler satır sonlandırıcı olarak kabul edildi ve hata oluşturdu:
Örnek
// Bu, ES2019'de geçerlidir: let text = "\u2028";
Dikkat!
Şimdi, JavaScript ve JSON aynı kurallara sahiptir.
ES2019 öncesinde:
text = JSON.parse('"\u2028"') "" olarak çözümlenecek。
text = '"\u2028"' verecekdil hatası。
Yeniden Düzenlenmiş Function toString()
ES2019 RevizyonFunction toString() metodu hakkında.
toString() metodu fonksiyonun kaynak kodunu temsil eden bir dizi döndürür.
2019 yılından itibaren, toString() fonksiyonu fonksiyonun kaynak kodunu, yorumlar, boşluklar ve dil bilgisi ayrıntıları dahil olmak üzere döndürmelidir.
2019 yılına kadar, farklı tarayıcılar farklı fonksiyon varyasyonlarını döndürdü (örneğin, yorumlar ve boşluklar olmadan). 2019 yılından itibaren, bu fonksiyon tamamen yazıldığı gibi döndürmelidir.
Örnek
function myFunction(p1, p2) { return p1 * p2; }