ما الجديد في 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من depth1.

بناء الجملة: 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: ماذا يفعلون ومتى يستخدمونهما