هناك إجراء قياسي لأحدث إصدارات
Javascript وهناك لجنة كاملة وراء ذلك. في هذه المقالة ، سأتحدث عن من يتخذ القرارات بشأن أي مواصفات جديدة ، وما هو الإجراء الخاص بها ، وما الجديد في
ES2019 .

تسمى مواصفات اللغة التي تتحكم في جافا سكريبت
ECMAScript . هناك مجموعة تسمى اللجنة الفنية
39 [TC39] ، والتي تستعرض كل المواصفات قبل اعتمادها.
كل تغيير يحدث على مراحل:
- المرحلة 0: الأفكار
- المرحلة 1: العروض
- المرحلة 2: المسودات
- المرحلة 3: المرشحون
- المرحلة 4: الانتهاء / الموافقة
من المرجح أن تكون الوظيفة التي تصل إلى المرحلة 4 جزءًا من مواصفات اللغة.
النظر في ما يضاف إلى المواصفات وفقا ل ES2019.
Array.prototype. {Flat، flatMap}
يسمح لك
Array.prototype.flat () بسلاسة الصفائف بشكل متكرر إلى عمق محدد وإرجاع صفيف جديد.
بناء الجملة:
Array.prototype.flat (عمق)العمق - القيمة الافتراضية هي 1 ، استخدم
Infinity لتنعيم جميع الصفائف المتداخلة.
const numbers = [1, 2, [3, 4, [5, 6]]]; // Considers default depth of 1 numbers.flat(); > [1, 2, 3, 4, [5, 6]] // With depth of 2 numbers.flat(2); > [1, 2, 3, 4, 5, 6] // Executes two flat operations numbers.flat().flat(); > [1, 2, 3, 4, 5, 6] // Flattens recursively until the array contains no nested arrays numbers.flat(Infinity) > [1, 2, 3, 4, 5, 6]
يقوم Array.prototype.flatMap () بتعيين كل عنصر باستخدام دالة مناظرة ومحاذاة النتيجة إلى مصفوفة جديدة. هذا مطابق لعملية
الخريطة ، متبوعة بعمق
مسطح قدره 1.
بناء الجملة:
Array.prototype.flatMap (رد الاتصال)رد الاتصال:
وظيفة تنتج عنصر صفيف جديد.
const numbers = [1, 2, 3]; numbers.map(x => [x * 2]); > [[2], [4], [6]] numbers.flatMap(x => [x * 2]); > [2, 4, 6]
Object.fromEntries
يقوم
Object.fromEntries بعكس Object.entries. يحول قائمة من أزواج مفتاح القيمة إلى كائن.
بناء الجملة:
Object.fromEntries (تكراري)التكرار: التكرار كصفيف أو كائنات
خريطة تقوم بتنفيذ
البروتوكول القابل للتكرار .
const records = [['name','Mathew'], ['age', 32]]; const obj = Object.fromEntries(records); > { name: 'Mathew', age: 32} Object.entries(obj); > [['name','Mathew'], ['age', 32]];
String.prototype. {TrimStart، trimEnd}
يزيل
trimStart () المسافات في بداية السطر ، ويزيل
trimEnd () المسافات في نهاية السطر.
const greeting = ` Hello Javascript! `; greeting.length; > 19 greeting = greeting.trimStart(); > 'Hello Javascript! ' greeting.length; > 18 greeting = 'Hello World! '; greeting.length; > 15 greeting = greeting.trimEnd(); > 'Hello World!' greeting.length; > 12
اقبض ملزمة اختياري
قبل المواصفات الجديدة ، كان مطلوبًا أن يكون هناك متغير استثناء مرتبط ببيان
catch . جعل ES2019 هو اختياري.
// Before try { ... } catch(error) { ... } // After try { ... } catch { ... }
هذه الميزة مفيدة إذا كنت تريد تجاهل الخطأ تمامًا.
أفضل الممارسات هي النظر في معالجة الأخطاء.هناك أوقات تعرف فيها خطأ محتمل قد ينجح عند إجراء العمليات. ويمكنك تجاهل التعامل مع الصيد.
JSON ⊂ ECMAScript
يُسمح الآن بحرف فواصل الأسطر (U + 2028) والأحرف الفاصلة للفقرة (U + 2029) بالأحرف الحرفية للسلسلة. سابقًا ، تم اعتبارهم
أطرافًا لسلسلة أحرف وألقوا استثناءات
SyntaxError .
// Produces invalid string before ES2019 eval('"\u2028"'); // Valid in ES2019 eval('"\u2028"');
شكل جيد JSON.Stringify
بدلاً من نقاط الكود البديلة غير المقيدة المؤدية إلى وحدات كود
UTF-16 واحدة ، يمثلها ES10 باستخدام تسلسل هروب JSON.
JSON.stringify('\uD800'); > '" "' JSON.stringify('\uD800'); > '"\\ud800"'
Function.prototype.toString
.toString () يعرض الآن مقتطفات كاملة من شفرة المصدر ، بما في ذلك المسافات والتعليقات.
function /* a comment */ foo () {} // Previously: foo.toString(); > 'function foo() {}' ^ no comment ^ no space // Now: foo.toString(); > 'function /* comment */ foo () {}'
Symbol.prototype.description
خاصية للقراءة فقط تقوم بإرجاع وصف اختياري لكائن
Symbol :
Symbol('desc').toString(); > "Symbol(desc)" Symbol('desc').description; > "desc" Symbol('').description; > "" Symbol().description; > undefined
الخاتمة
هناك العديد من الأشياء الأخرى المثيرة للاهتمام ، مثل الطرق والحقول الثابتة والخاصة في الفصول ، Legacy RegEx ، إلخ. من المهم للمطور مراقبة ظهور التقنيات الجديدة وتحسين التقنيات القديمة واستخدامها في العمل.
سيكون من المفيد قراءة الإصدارات السابقة:
ES2015 ES2016 ES2017 ES2018