ECMAScript 2020
رقم إصدار JavaScript
تُسمى إصدارات JS القديمة بالأرقام: ES5 (2009) و ES6 (2015).
بدءًا من عام 2016، يتم تسمية الإصدارات بناءً على السنة: ECMAScript 2016، 2017، 2018، 2019،...
ميزات جديدة في ES2020:
- BigInt
- طريقة matchAll() للنصوص
- عاملة دمج القيم (??)
- عاملة السلسلة الاختيارية (?.)
- عاملة AND الربط (&&=)
- عاملة OR الربط (||=)
- عاملة دمج القيم (??=)
- Promise.allSettled()
- استيراد ديناميكي
تحذير
هذه الميزات جديدة نسبيًا.
قد تحتاج المتصفحات القديمة إلى رمز بديل (Polyfill).
BigInt في JavaScript
استخدم متغير BigInt في JavaScript لتحفظ القيم الكبيرة التي لا يمكن تمثيلها باستخدام أرقام JavaScript العادية.
يمكن للعدد الصحيح في JavaScript تحقيق دقة إلى 15 رقم فقط.
مثال Integer
let x = 999999999999999; let y = 9999999999999999; // كبير جدًا
مثال BigInt
let x = 9999999999999999; let y = 9999999999999999n;
لإنشاء BigInt، يرجى وضع n
لإضافة إلى نهاية عدد صحيح أو استدعاء BigInt():
مثال
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345);
نوع BigInt في JavaScript هو "bigint":
مثال
let x = BigInt(999999999999999); let type = typeof x;
منذ سبتمبر 2020، جميع المتصفحات الحديثة تدعم BigInt:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
مايو 2018 | شهر يناير 2020 | يوليو 2019 | سبتمبر 2020 | يونيو 2018 |
طريقة matchAll() لـ JavaScript
قبل ES2020، لم يكن هناك أي طريقة نصية يمكن استخدامها للبحث عن جميع المرات التي يظهر فيها سلسلة نصية داخل سلسلة نصية.
مثال
const iterator = text.matchAll("Cats");
إذا كانت المعلمة هي تعبير تقديري، يجب تعيين علامة العامل العام (g
)، وإلا سيتم إلقاء TypeError.
مثال
const iterator = text.matchAll(/Cats/g);
إذا كنت ترغب في البحث دون التمييز بين الأحرف الكبيرة والصغيرة، يجب تعيين علامة عدم التمييز بين الأحرف الكبيرة والصغيرة (i
)
مثال
const iterator = text.matchAll(/Cats/gi);
إشارة:ES2021 تم إدخال طريقة السلسلة النصية replaceAll().
عنصر التجميع الفارغ (مستشهد التجميع الفارغ) (运算符 ??)
إذا لم يكن المعلمة الأولى غير فارغةnull
أو undefined
ثم ??
عنصر الحساب يعود للمعلمة الأولى.
إذا لم يكن الأول فارغاً العودة
مثال
let name = null; let text = "missing"; let result = name ?? text;
منذ مارس 2020، جميع المتصفحات الحديثة تدعم عمليات الحساب Nullish:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 80 | Edge 80 | Firefox 72 | Safari 13.1 | Opera 67 |
شهر فبراير 2020 | شهر فبراير 2020 | شهر يناير 2020 | مارس 2020 | مارس 2020 |
عنصر السلسلة الاختيارية (مستشهد اختياري عنصر) (运算符?.)
إذا كان الكائن undefined
أو null
ثمعنصر السلسلة الاختياريةالعودة undefined
بدلاً من إلقاء خطأ).
مثال
const car = {type:"Fiat", model:"500", color:"white"}; let name = car?.name;
منذ مارس 2020، جميع المتصفحات الحديثة تدعم ?.=
المعادلة:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 80 | Edge 80 | Firefox 74 | Safari 13.1 | Opera 67 |
شهر فبراير 2020 | شهر فبراير 2020 | مارس 2020 | مارس 2020 | مارس 2020 |
وظيفة赋قيمة منطقية AND (&&= عميل)
عنصر تخصيص منطقي ANDللإشارة بين قيمتين.
إذا كان القيمة الأولى خطأ
، يتم توزيع الثانية.
مثال على تخصيص منطقي AND
let x = 100; x &&= 5;
تم دعم جميع المتصفحات الحديثة منذ سبتمبر 2020 &&=
المعادلة:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
أغسطس 2020 | أغسطس 2020 | مارس 2020 | سبتمبر 2020 | سبتمبر 2020 |
عنصر تخصيص منطقي OR (运算符 ||=)
عنصر تخصيص منطقي ORللإشارة بين قيمتين.
إذا كان القيمة الأولى صحيح
، يتم توزيع الثانية.
مثال على تخصيص منطقي OR
let x = 10; x ||= 5;
تم دعم جميع المتصفحات الحديثة منذ سبتمبر 2020 ||=
المعادلة:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
أغسطس 2020 | أغسطس 2020 | مارس 2020 | سبتمبر 2020 | سبتمبر 2020 |
assignment المفقودة (??= عميل)
assignment المفقودةمستخدم (Nullish Coalescing Assignment Operator) بين القيمتين.
إذا كانت القيمة الأولى undefined
أو null
، يتم توزيع الثانية.
مثال على assignment المفقودة
let x = 10; x ??= 5;
تم دعم جميع المتصفحات الحديثة منذ سبتمبر 2020 ??=
المعادلة:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
أغسطس 2020 | أغسطس 2020 | مارس 2020 | سبتمبر 2020 | سبتمبر 2020 |