ما الجديد في JavaScript ES2019

يعرف الكثير منا أن هناك إجراءً قياسيًا لإصدارات Javascript الأخيرة ولجنة وراء ذلك. في هذا المنشور ، سأشرح من يقوم بالمكالمة النهائية لأي مواصفات جديدة ، وما هو الإجراء الخاص بها ، وما الجديد في ES2019.
تسمى مواصفات اللغة التي تدفع JavaScript ECMAScript. يوجد فريق وراء ذلك يسمى اللجنة الفنية 39 [TC39] الذي يراجع كل المواصفات قبل اعتمادها .
كل تغيير يمر بعملية مع مراحل النضج.
- المرحلة 0: الأفكار / المخرج
- المرحلة 1: الاقتراحات
- المرحلة 2: المسودات
- المرحلة الثالثة: المرشحون
- المرحلة 4: منتهية / معتمدة
الميزة التي تصل إلى المرحلة 4 ستكون على الأرجح جزءًا من مواصفات اللغة.
دعنا نتعمق في الأشياء التي تمت إضافتها حديثًا إلى المواصفات بموجب ES2019.
Array.prototype. {flat، flatMap}
Array.prototype.flat()
اقترح لتسوية المصفوفات بشكل متكرر حتى المحدد depth
وإرجاع مصفوفة جديدة.
بناء الجملة :Array.prototype.flat(depth)
العمق - القيمة الافتراضية 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()
تعيين كل عنصر باستخدام وظيفة تعيين وتسطيح النتيجة في مصفوفة جديدة. انها مطابقة للعملية خريطة يتبعه flat
من depth
1.
بناء الجملة: Array.prototype.flatMap(callback)
رد الاتصال:function
ينتج عنصرًا في المصفوفة الجديدة.
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(iterable)
iterable: إن iterable مثل Array
أو Map
أو كائنات تنفيذ بروتوكول iterable
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
استنتاج
يحتفظ TC39 بجميع المواصفات القادمة التي هي في المرحلة> 1 من العملية هنا. بصفتك مطورًا ، من المهم أن تراقب ما يحدث حولك. هناك العديد من الأشياء المثيرة التي تظهر في الأساليب والمجالات الثابتة والخاصة في الفصول الدراسية ، و Legacy RegE x ، وما إلى ذلك. اكتشف كل الأشياء الجديدة التي هي في مرحلة الاقتراح هنا.
code = coffee + developer
فيما يلي بعض الموضوعات الأكثر إثارة للاهتمام:
- نظرة عامة سريعة على رموز JavaScript
- كيفية اعتماد استراتيجية git التفريع
- مقدمة إلى Git Merge و Git Rebase: ماذا يفعلون ومتى يستخدمونهما