خمن نتيجة كود جافاسكربت #1

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

1 / 11

console.log(!![])

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

خمن نتيجة كود جافاسكربت #1 — ورقة الأجوبة الخاصة بالإختبار.

1. console.log(!![])

الجواب: true
الشرح: المصفوفة الفارغة تُعد قيمة صادقة في JavaScript. النفي المزدوج يحولها إلى قيمة منطقية، فيصبح الناتج true (صحيح).

2. console.log(0.1 + 0.2 === 0.3);

الجواب: خطأ
الشرح: هذا يحدث لأن الأرقام العشرية لا تُخزن بدقة كاملة في الذاكرة، مما يؤدي إلى أخطاء تقريب صغيرة، فناتج 0.1 + 0.2 لا يساوي 0.3 بدقة، بل 0.30000000000000004..

3. const arr = [1, 2, 3]; arr[100] = 4; console.log(arr.length);

الجواب: 101
الشرح: المصفوفات في JavaScript متفرّقة؛ يمكنك تعيين فهرس أكبر من طولها الحالي، وسيعكس ‎length أعلى فهرس + 1.

4. console.log(typeof null)

الجواب: object
الشرح: يُعتبر ‎null كائنًا بسبب خطأ تاريخي لم يُصلَح حفاظًا على التوافقية الخلفية.

5. function func(a, b = '', c, ...rest) {} console.log(func.length);

الجواب: 1
الشرح: خاصية ‎length للدالة تمثل عدد الوسائط المتوقَّعة قبل أول وسيط اختياري، مع استثناء وسائط ‎rest.

6. console.log(typeof NaN);

الجواب: number
الشرح: على الرغم من أن ‎NaN تعني «ليس رقمًا»، فإن نوعها بالفعل 'number'.

7. console.log("10" - 5); console.log("10" + 5);

الجواب: 5 105
الشرح: الطرح يحوّل '10' إلى رقم، أما الجمع فيجري دمج السلسلتين، فيتحول 5 إلى نص.

8. console.log([10, 2, 5, 1].sort());

الجواب: [1, 10, 2, 5]
الشرح: المقارنة تتم بناءً على الحرف الأول من كل عنصر، وليس كقيم عددية. لذلك تظهر '10' قبل '2' و '5'.

9. for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1000); }

الجواب: 3 3 3
الشرح: تم إعلان المتغير i باستخدام var، والذي يمتلك نطاقًا وظيفيًا (function scope). عند تنفيذ دوال setTimeout، تكون الحلقة قد انتهت بالفعل، وتكون قيمة i هي 3. عند استبدال var بـ let، يصبح لـ i نطاق كتلي (block-level scope)، مما يسمح لكل دالة معاودة (callback) بالاحتفاظ بنسختها الخاصة من i، وبالتالي تُطبع القيم المتوقعة: 0، 1، و2.

10. let a = 5; let b = a++ + ++a; console.log(b);

الجواب: 12
الشرح: قيمة ‎a تبدأ بـ 5؛ ‎a++ تُعيد 5 ثم ترفع ‎a إلى 6، و‎++a ترفعها إلى 7 وتُعيد 7. لذا b = 5 + 7 = 12.

11. console.log("ba" + +"a" + "a");

الجواب: baNaNa
الشرح: المُعامل الأحادي ‎+ يحاول تحويل 'a' إلى رقم فينتج ‎NaN؛ يصبح التعبير 'ba' + NaN + 'a' أي 'baNaNa'.