ECMAScript 2019

  • الصفحة السابقة JS 2018
  • الصفحة التالية JS 2020

رقم إصدار JavaScript

تم تسمية إصدارات JS القديمة أرقامًا: ES5 (2009) و ES6 (2015)

منذ عام 2016، يتم تسمية الإصدارات حسب السنة: ECMAScript 2016، 2017، 2018، 2019،...

ميزات جديدة في ES2019:

تحذير

هذه الميزات جديدة نسبيًا

قد تحتاج المتصفحات القديمة إلى رمز بديل (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;
}

جرب بنفسك

  • الصفحة السابقة JS 2018
  • الصفحة التالية JS 2020