اختبار: هل تعرف JavaScript الحديثة؟
أثبت مهاراتك في JavaScript!
هل تفرق بين ES2015 و ES2022؟
- أثبت مهاراتك في JavaScript! 🚀
- لا حاجة لتسجيل الدخول أو الاشتراك. ✨
- اختيار من متعدد. 🤖 … ما مدى صعوبة الأمر، هاه؟
ما هو ناتج الكود التالي؟
const obj = { foo: null };const result = obj.foo?.bar;console.log(result);تحقق من دلالات عامل التشغيل في JavaScript بالضبط. الإجابة المغرية غالبًا ما تكون ما كانت ستفعله الصياغة القديمة، وليس ما يفعله هذا الميزة.
عامل الربط الاختياري (?.) يوقف التقييم إذا كان الجانب الأيسر هو null أو undefined. بما أن obj.foo هو null، فإن obj.foo?.bar يتم تقييمه إلى undefined.
ما هو ناتج الكود التالي؟
const a = 42n;const result = a * 2n;console.log(result);تحقق من دلالات العوامل في JavaScript بدقة. الإجابة المغرية غالبًا ما تكون ما كانت ستفعله الصياغة القديمة، وليس ما تفعله هذه الميزة.
يتم إنشاء قيم BigInt بإلحاق n برقم. لا يمكنك خلط BigInt مع الأرقام العادية في العمليات الحسابية. هنا، كلا القيمتين من نوع BigInt، لذا تعمل عملية الضرب، مما ينتج عنه 84n.
ماذا يسجل هذا؟
const modulePromise = import('./myModule.js');console.log(typeof modulePromise);تحقق من دلالات عامل التشغيل في JavaScript بدقة. الإجابة المغرية غالبًا ما تكون ما كانت ستفعله الصيغة القديمة، وليس ما تفعله هذه الميزة.
الدالة import() تُرجع Promise يتم حله إلى كائن الوحدة. لأن مثيلات Promise هي كائنات، فإن typeof modulePromise يسجل 'object'.
ماذا ستكون نتيجة الكود التالي؟
const promises = [ Promise.resolve('success'), Promise.reject('error')];Promise.allSettled(promises).then(results => { console.log(results[0].status + ': ' + results[0].value);});تحقق من دلالات العوامل في JavaScript بدقة. الإجابة المغريّة غالبًا هي ما كانت ستفعله الصياغة القديمة، وليس ما يفعله هذا الميزة.
تقوم Promise.allSettled بإرجاع مصفوفة من الكائنات التي تصف نتيجة كل وعد. الوعد الأول هو fulfilled بالقيمة 'success'، لذا ستطبع جملة الطباعة fulfilled: success.
ماذا يُرجع str.matchAll()؟
const str = 'foo1bar2baz3';const matches = str.matchAll(/\d/g);تحقق من دلالات العوامل في JavaScript بالضبط. الإجابة المغرية غالبًا ما تكون ما كانت ستفعله الصياغة القديمة، وليس ما تفعله هذه الميزة.
يُعيد String.matchAll مكررًا من المطابقات، وليس مصفوفة. يمكن استخدام هذا المكرر للحصول على جميع المجموعات المتطابقة من سلسلة نصية.
ماذا يمثل import.meta.url؟
console.log(import.meta.url);تحقق من دلالات عامل التشغيل JavaScript بالضبط. الإجابة المغرية غالبًا ما تكون ما كانت ستفعله الصياغة القديمة، وليس ما تفعله هذه الميزة.
import.meta هو كائن يحتوي على بيانات وصفية حول الوحدة الحالية. الخاصية import.meta.url تمثل رابط الوحدة الحالية، والتي يمكن استخدامها للحصول على معلومات حول مكان تشغيل السكريبت.
ماذا يوفر WeakRef؟
const obj = { data: 'important' };const ref = new WeakRef(obj);console.log(ref.deref());تحقق من دلالات العوامل الدقيقة في JavaScript. الإجابة المغرية غالبًا ما تكون ما كانت ستفعله الصياغة القديمة، وليس ما تفعله هذه الميزة.
يوفر WeakRef مرجعًا ضعيفًا لكائن، مما يسمح بجمع الكائن بواسطة جامع القمامة إذا لم توجد مراجع أخرى. نظرًا لأن obj لا يزال مرجعًا قويًا هنا، فإن deref() يُرجع الكائن الأصلي. إذا تم استرداد الهدف، فإن deref() سيعيد undefined.
