توقع مخرجات 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]'`. ثم يقوم المعامل `+` بإجراء دمج السلاسل النصية.