اسئله (JavaScript):
-
1️⃣ إيه الفرق بين null و undefined؟
- null: قيمة انت اللي بتحطها عشان تقول إن المتغير فاضي عمدا
- undefined: قيمة JavaScript بتحطها لو انت معرّفتش المتغير أو مااديتلوش قيمة.
-
2️⃣ إزاي الـ Event Loop بيشتغل في الـ Browser؟ وليه مهم تفهمه؟
الموضوع ببساطة إن JavaScript Single-Threaded يعني بتنفذ كود واحد بس في نفس الوقت لكن مع الـ Event Loop تقدر تنفذ حاجات Asynchronous زي setTimeout, fetch, والـ Promises بدون ما توقف باقي الكود.
طيب ليه مهم تفهمه؟
عشان متكتبش كود يسبب Blocking ويهنج الصفحة -
3️⃣ إيه الفرق بين let, const, و var من ناحية الـ Scope والـ Hoisting؟
- var: ال Scope بتاعها Function بس وبتطلع فوق في الـ Hoisting بس بدون قيمة.
- let: ال Scope بتاعها Block وبتطلع فوق بس من غير ما تشتغل (Temporal Dead Zone).
- const: ال زي let بس مينفعش تغير قيمتها بعد تعريفها.
-
4️⃣ إيه الفرق بين == و === في JavaScript؟
- == (Loose Equality): بيعمل Type Coercion (يعني بيحاول يحوّل القيم علشان يقارنها).
- === (Strict Equality): بيقارن القيم والنوع بدون تحويل.
-
5️⃣ إيه الفرق بين call, apply, و bind؟
التلاتة بيستخدموا لتغيير Context (this)، بس الفرق في الطريقة:
- call: بتاخد الـ this ثم Arguments عاديين.
- apply: بتاخد الـ this ثم Arguments في Array.
- bind: بيرجع Function جديدة فيها نفس الـ this اللي حددته.
-
7️⃣ إيه الفرق بين Deep Copy و Shallow Copy؟ وإزاي تعمل كل واحدة في JavaScript؟
- Shallow Copy: بينسخ العنصر بس مش القيم الداخلية لو كانت Objects.
- Deep Copy: بينسخ كل حاجة حتى القيم الداخلية.
-
8️⃣ إيه الفرق بين Synchronous و Asynchronous؟ وإزاي JavaScript بتتعامل مع الـ Async Code؟
- Synchronous: كل سطر بيتنفذ قبل اللي بعده.
- Asynchronous: حاجات بتتنفذ في الخلفية زي setTimeout و fetch.
-
9️⃣ إيه الفرق بين Promise و async/await؟ وإمتى تستخدم كل واحد؟
- Promise: طريقة Asynchronous بتشتغل بـ .then() و .catch().
- async/await: Syntax أسهل بيخلي الكود شكله Synchronous لكن هو Asynchronous.
-
🔟 إزاي تكتب كود JavaScript Performant وما يسببش مشاكل في الـ Performance؟
- استخدم const و let بدل var عشان تتجنب المشاكل.
- استخدم Debounce و Throttle في الأحداث اللي بتحصل كتير زي scroll.
- استخدم Lazy Loading في الصور والـ Components التقيلة.
- قلل استخدام document.querySelectorAll واعتمد على Caching للـ DOM Elements.
-
1️⃣ 1️⃣ إيه هي الـ Event Delegation وليه بنستخدمها؟
Event Delegation هي واحدة من الطرق القوية في JavaScript اللي بتخلينا نكتب كود أنظف وأكفأ لما بنتعامل مع الأحداث (Events) الفكرةببساطة إنك بدل ما تضيف Event Listener لكل عنصر في الصفحة بتضيفه لعنصر أب (Parent) ولما يحصل الحدث بتشوف هو جاي منين وتتصرف بناء عليه.
- لو عندك قائمة فيها 1000 عنصر وهتحط Event Listener لكل عنصر فده هيستهلك مزيد من الذاكرة وهيبطّأ الأداء.
والحل؟
بدل ما تحط 1000 Event Listener تحط واحد بس على عنصر الأب ولما يحصل الحدث تتأكد من العنصر المستهدف (target). - في بعض الحالات العناصر بتتولد بعد تحميل الصفحة زي لو عندك قائمة مهام Todo والمستخدم بيضيف مهام جديدة بعد تشغيل الموقع. لو كنت بتضيف Event Listeners مباشرة لكل عنصر، فالعناصر الجديدة مش هتكون عندها أحداث مفعلة. لكن لو استخدمت Event Delegation الحدث هيوصل لأي عنصر جديد تلقائيا.
- كل Event Listener بياخد جزء من الذاكرة فلو عندك مئات أو آلاف العناصر الموضوع هيستهلك رامات أكتر وهيعمل Memory Leaks. لما تستخدم Event Delegation، بتوفر في استهلاك الذاكرة والـ DOM بيبقى أنضف وأكفأ.
✅ مثال عملي:
✅ مثال عملي:
✅ مثال عملي:
✅ مثال عملي:
✅ مثال عملي:
✅ مثال عملي: Shallow Copy
✅ مثال عملي: Deep Copy
✅ مثال عملي:
طب ليه نستخدمها؟
قسم التعليقات
Emad
رائع