ECMAScript 2019
رقم إصدار JavaScript
تم تسمية إصدارات JS القديمة أرقامًا: ES5 (2009) و ES6 (2015)
منذ عام 2016، يتم تسمية الإصدارات حسب السنة: ECMAScript 2016، 2017، 2018، 2019،...
ميزات جديدة في ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- ربط catch اختياري
- Array.flat()
- Array.flatMap()
- Array.Sort() المعديل
- تعديل JSON.stringify()
- التمييزات المسموح بها في نصوص السلسلة
- Function.toString() المعديل
تحذير
هذه الميزات جديدة نسبيًا
قد تحتاج المتصفحات القديمة إلى رمز بديل (Polyfill)
طريقة 字符串 JavaScript trimStart()
أضاف ES2019 طريقة String إلى JavaScript trimStart()
.
trimStart()
طريقة عمل trim()
شبيه، لكن يزيل فقط المسافات من بداية السلسلة
مثال
let text1 = " Hello World! "; let text2 = text1.trimStart();
منذ يناير 2020، جميع المتصفحات الحديثة تدعم JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
أبريل 2018 | يناير 2020 | يونيو 2018 | سبتمبر 2018 | مايو 2018 |
طريقة 字符串 JavaScript trimEnd()
ES2019 أضاف إلى JavaScript trimEnd()
أساليب السلسلة
trimEnd()
طريقة عمل trim()
شبيه، لكن يزيل فقط المسافات من نهاية السلسلة
مثال
let text1 = " Hello World! "; let text2 = text1.trimEnd();
من يناير 2020، جميع المتصفحات الحديثة تدعم JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
أبريل 2018 | يناير 2020 | يونيو 2018 | سبتمبر 2018 | مايو 2018 |
طريقة منتجات JavaScript fromEntries()
ES2019 أضاف إلى JavaScript fromEntries()
طريقة الجسم.
fromEntries()
تقوم الطريقة بإنشاء جسم من الأزواج المفتاح/القيمة الموجودة في المتكرر.
مثال
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
من يناير 2020، جميع المتصفحات الحديثة تدعم JavaScript Object fromEntries():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
مارس 2019 | يناير 2020 | أكتوبر 2018 | مارس 2019 | أبريل 2019 |
ربط catch اختياري
من بداية ES2019، إذا لم يكن من الضروري، يمكن تجاهل معامل catch:
مثال
قبل 2019:
try { // code } catch (err) { // code }
بعد 2019:
try { // code } catch { // code }
من يناير 2020، جميع المتصفحات الحديثة تدعم الربط الاختياري لـ catch:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
أبريل 2018 | يناير 2020 | يناير 2018 | مارس 2018 | مايو 2018 |
طريقة مجموعة JavaScript flat()
ES2019 أضاف إلى JavaScript flat()
طريقة اللوحة.
flat()
تقوم الطريقة بإدراج اللوحة المدمجة لإنشاء لوحة جديدة.
مثال
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
من يناير 2020، جميع المتصفحات الحديثة تدعم JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
سبتمبر 2018 | يناير 2020 | سبتمبر 2018 | سبتمبر 2018 | سبتمبر 2018 |
طريقة مجموعة JavaScript flatMap()
ES2019 أضاف إلى JavaScript flatMap()
طريقة اللوحة.
flatMap()
الطريقة أولاً تقوم بتحويل جميع عناصر اللوحة، ثم تقوم بإنشاء لوحة جديدة من خلال إدراج اللوحة.
مثال
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
طريقة مجموعة مستقرة sort()
ES2019 تعديلللمعالجة Array.sort()
قبل عام 2019، سمحت المعيار بالخوارزميات غير الثابتة مثل QuickSort.
بعد ES2019، يجب على المتصفحات استخدام خوارزميات الترتيب الثابتة:
عند ترتيب العناصر بناءً على قيمة واحدة، يجب أن تبقى هذه العناصر في نفس المواضع بالنسبة للعناصر الأخرى التي لها نفس القيمة.
مثال
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 } ];
في المثال السابق، عند ترتيب النتائج بناءً على السعر، لا يسمح بأن تكون النتائج في مواضع أخرى للإسم كما يلي:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
تعديل JSON.stringify()
ES2019 تعديلللمعالجة JSON.stringify()
قبل عام 2019، لم يستطع JSON تحويل السلاسل التي تحتوي على إدراك باستخدام \.
مثال
let text = JSON.stringify("\u26D4");
قبل ES2019، كان استخدام JSON.stringify() على نقاط الت编码 UTF-8 (U+D800 إلى U+DFFF) يعود بنتائج Unicode التالفة مثل ���.
بعد هذه التعديلات، يمكن تحويل السلاسل التي تحتوي على نقاط الت编码 UTF-8 باستخدام JSON.stringify() بشكل آمن واستعادتها باستخدام JSON.parse() إلى النص الأصلي.
حرف الفصل
الآن يسمح باستخدام حروف الفصل بين السطور وحروف الفصل بين الفقرات في نصوص السلاسل (\u2028
و \u2029
)
قبل عام 2019، كانت هذه تعتبر كحروف النهاية للسطر وتسبب في أخطاء استثنائية:
مثال
// هذا هو صحيح في ES2019: let text = "\u2028";
الاحتياط
الآن، يحتوي JavaScript و JSON على نفس القواعد.
قبل ES2019:
سيتم تحويل "\u2028" إلى "" باستخدام JSON.parse('"\u2028"').
سيكون الناتج عند إدخال "\u2028"خطأ في الجملة.
تعديل Function toString()
ES2019 تعديلطريقة Function toString()
تقوم طريقة toString() بإرجاع سلسلة تمثل برمجة الدالة.
بدءًا من عام 2019، يجب أن يعود toString() ببرمجة الدالة، بما في ذلك التعليقات والفضاءات والتفاصيل النحوية.
قبل عام 2019، عادت مختلف المتصفحات إلى نماذج مختلفة من الدوال (مثل عدم وجود تعليقات أو مسافات). بدءًا من عام 2019، يجب أن تعود الدالة تمامًا كما كتبت.
مثال
function myFunction(p1, p2) { return p1 * p2; }