توقع مخرجات JavaScript #2 - مفاهيم متقدمة

إختر خيارا واحدا

1 / 10

console.log(NaN === NaN);

قائمة الأجوبة

توقع مخرجات JavaScript #2 - مفاهيم متقدمة — ورقة الأجوبة الخاصة بالإختبار.

1. console.log(NaN === NaN);

الجواب: false

الشرح : قيمة NaN هي القيمة الوحيدة في JavaScript التي لا تساوي نفسها. هذه سمة مميزة لـ NaN، للتحقق منها استخدم `isNaN()`.

2. console.log([] == ![]);

الجواب: صحيح

الشرح : المعامل `!` يحوّل معامله إلى قيمة منطقية ثم ينفيه. `[]` هي قيمة 'truthy' (صحيحة)، لذا `![]` هي `false` (خطأ). ثم يقوم المعامل `==` بمحاولة تحويل النوع. يتم تحويل `[]` إلى سلسلة نصية فارغة `''`، ويتم تحويل `false` إلى `0`. `'' == 0` هي `true` (صحيح).

3. let x = 10; function foo() {  console.log(x);  let x = 20; } foo();

الجواب: خطأ مرجعي

الشرح : هذا خطأ منطقة الموت الزمني (TDZ). المتغير `x` داخل الدالة `foo` له نطاق كتلة بسبب `let`. عند تنفيذ `console.log(x)`، تم تعريف `x` ولكن لم يتم تهيئته بعد، مما يؤدي إلى `ReferenceError`.

4. console.log(typeof null === 'object' && null === null);

الجواب: صحيح

الشرح : يعيد `typeof null` القيمة 'object' (وهو خطأ تاريخي في JavaScript). `null === null` هو صحيح. كلا الشرطين صحيحان، لذا النتيجة هي صحيح.

5. const obj = { a: 1 }; const arr = [obj]; obj.a = 2; console.log(arr[0].a);

الجواب: 2

الشرح : يتم تعيين الكائنات بالإشارة. `arr[0]` يحمل إشارة إلى `obj`. عند تعديل `obj.a`، ينعكس التغيير في جميع الإشارات إلى هذا الكائن، بما في ذلك `arr[0]`.

6. console.log(parseInt('10.5 degrees'));

الجواب: 10

الشرح : تقوم الدالة `parseInt()` بتحليل وسيطة نصية وإرجاع عدد صحيح. تتوقف عن التحليل عند أول حرف غير رقم أو إشارة، لذا تصبح '10.5 degrees' القيمة 10.

7. console.log([,,].length);

الجواب: 2

الشرح : عند استخدام صيغة المصفوفة الحرفية مع الفواصل، تُنشئ كل فاصلة ضمنيًا خانة فارغة. `[,,]` تحتوي على خانتين فارغتين (المؤشرين 0 و 1)، وبالتالي طولها هو 2.

8. console.log(true + false);

الجواب: 1

الشرح : عند استخدام المعامل `+` مع القيم المنطقية، يتم تحويل `true` إلى `1` و `false` إلى `0`. لذا، `1 + 0` يساوي `1`.

9. console.log({} + []);

الجواب: 0

الشرح : عندما يظهر `{}` في بداية تعليمة، يتم تفسيره غالبًا على أنه كتلة كود فارغة، وليس كائن حرفي. يصبح التعبير حينها `+[]`. يقوم معامل الجمع الأحادي بتحويل المصفوفة الفارغة `[]` إلى رقم، وهو `0`.

10. console.log([] + {});

الجواب: [object Object]

الشرح : عند استخدام المعامل `+` مع مصفوفة وكائن، تحاول JavaScript تحويلهما إلى قيم بدائية. `[]` يتحول إلى سلسلة نصية فارغة `''`. `{}` يتحول إلى السلسلة النصية `'[object Object]'`. ثم يقوم المعامل `+` بإجراء دمج السلاسل النصية.

إختبارات مشابهة