JavaScript Documentation
Concise, example-driven JavaScript reference. Read the concept, see the code, then practice it in a Coddy journey.
Start a guided JavaScript journeyالبداية
- ما هي JavaScriptتعرّف على لغة JavaScript: ما هي، وأين تعمل، وفيم تُستخدم، وما الفرق بينها وبين Java و TypeScript، في شرح مبسّط للمبتدئين.
- تشغيل JavaScriptالطرق العملية لتشغيل جافا سكريبت في 2026 — من كونسول المتصفح، ووسم script داخل HTML، وحتى Node.js من سطر الأوامر، ومتى تختار كلًا منها.
- الصياغة والفواصلكيف تعمل صياغة جافا سكريبت من جمل وكتل وتعابير، والحقيقة الكاملة حول الفواصل المنقوطة وإدراجها التلقائي (ASI) ومتى تسبب لك مشاكل حقيقية.
- الوضع الصارمتعرّف على ما يغيّره الوضع الصارم في JavaScript، وكيف تفعّله، ولماذا يعمل تلقائياً داخل الوحدات (modules) والـ classes في الكود الحديث.
- التعليقاتشرح طريقة كتابة التعليقات في جافا سكريبت: `//` للسطر الواحد، و`/* */` للتعليقات متعددة الأسطر، مع نصائح عملية تخلي تعليقاتك مفيدة فعلاً بدل ما تكون ضوضاء في الكود.
المتغيرات والأنواع
- let و const و varالطرق الثلاث للتصريح عن المتغيرات في JavaScript، ولماذا يعتمد الكود الحديث على `const` افتراضيًا، ويلجأ إلى `let` عند الحاجة، ويتجنب `var` تقريبًا دائمًا.
- الأنواع البدائيةتعرّف على الأنواع البدائية السبعة في JavaScript — string و number و bigint و boolean و null و undefined و symbol — والفرق بينها وبين الكائنات.
- النصوص والقوالبشرح عملي للنصوص في JavaScript: علامات التنصيص، الـ Backticks، حقن المتغيرات، النصوص متعددة الأسطر، وأهم الدوال التي ستستخدمها فعلياً.
- الأرقام وBigIntكيف يتعامل جافا سكريبت فعلياً مع الأرقام: دقة الفاصلة العائمة، حدود MAX_SAFE_INTEGER، ومتى تحتاج إلى BigInt للأعداد الصحيحة الكبيرة.
- null و undefinedما الفرق الحقيقي بين null و undefined في جافا سكريبت؟ وكيف تتحقق من كل منهما؟ ومتى تستخدم هذه وليس تلك في كودك؟
- تحويل الأنواعكيف تتعامل JavaScript مع تحويل القيم بين الأنواع المختلفة: القواعد الضمنية التي توقع المبرمجين في الأخطاء، والتحويلات الصريحة التي يُفضَّل استخدامها، ومتى يعمل كل نوع منها.
- عوامل المساواةكيف تعمل المساواة في JavaScript فعلياً: الفرق بين == و ===، غرائب التحويل التلقائي، سلوك NaN والكائنات، ومتى تلجأ إلى Object.is.
التحكم في التدفق
- المعاملاتتعرّف على معاملات جافا سكريبت للعمليات الحسابية ومقارنة القيم ودمج المنطقيات والإسناد، مع المزالق الحقيقية التي تواجهك أثناء الكتابة.
- if / elseكيف تعمل جملة if/else في جافا سكريبت؟ شرح مبسط للشروط، وسلاسل else if، ومفهوم القيم الصادقة والكاذبة، ومتى تستخدم العامل الثلاثي بدلاً منها.
- switchشرح عملي لجملة switch في JavaScript: الحالات case، الأمر break، الحالة الافتراضية default، ظاهرة fallthrough، ومتى يكون switch أفضل من سلسلة if/else.
- حلقة forشرح عملي لحلقة `for` في JavaScript: الصيغة المكوّنة من ثلاثة أجزاء، المرور على المصفوفات، استخدام break و continue، الحلقات المتداخلة، وأشهر الأخطاء التي يقع فيها المبتدئون.
- حلقات whileتعرّف على حلقات `while` و`do...while` في JavaScript، ومتى تستخدمها بدل `for`، وكيف تتفادى الوقوع في الحلقات اللانهائية.
- for...of و for...inتعرّف على الفرق الحقيقي بين for...of و for...in في JavaScript: قيم أم مفاتيح؟ مصفوفات أم كائنات؟ ومتى تستخدم كل واحدة منهما.
- Truthy وFalsyتعرّف على القيم الـ falsy والـ truthy في JavaScript، القائمة الكاملة للقيم الكاذبة، وكيف يتصرّف التحويل المنطقي داخل شروط if.
التكرار
الدوال
- تعريف الدوالتعرّف على كيفية تعريف الدوال في JavaScript: الكلمة المفتاحية `function`، المعاملات، قيم الإرجاع، الرفع (Hoisting)، والفرق بين التصريح والتعبير.
- Arrow Functionsتعرّف على الدوال السهمية في جافا سكريبت: صياغة `=>`، الإرجاع الضمني، وكيف تتعامل مع `this`، ومتى تستخدمها بدلاً من `function` التقليدية.
- المعاملات الافتراضيةتعرّف على طريقة عمل المعاملات في JavaScript: كيف تضبط قيمة افتراضية، متى تُفعَّل، الفرق بين parameter و argument، وأخطاء شائعة مع null.
- Rest و Spreadتعرّف على طريقة عمل المعامل `...` في JavaScript: كيف تجمع الوسائط باستخدام rest، وكيف توسّع المصفوفات والكائنات باستخدام spread، ومتى تستخدم كل واحد منهما.
- الإغلاقات Closuresالـ Closure هي دالة تتذكر المتغيرات المحيطة بها. تعرّف على طريقة عمل الإغلاقات في JavaScript مع أمثلة عملية قابلة للتنفيذ وحالات استخدام واقعية.
- الكلمة thisكيف تعمل `this` فعلياً في جافا سكريبت — قواعد الربط الأربعة، لماذا تتصرف الدوال السهمية بشكل مختلف، وكيف تتجنّب فخ 'this is undefined' الشهير.
- الدوال عالية الرتبةتعرّف على الدوال عالية الرتبة في جافا سكريبت: كيف تمرّر دالة كوسيط، وكيف ترجع دالة من دالة أخرى، مع شرح عملي لـ map و filter و reduce.
الكائنات والمصفوفات
- الكائناتتعرّف على طريقة عمل الكائنات في JavaScript فعليًا: كيف تنشئها، وتقرأ وتعدّل خصائصها، وتضيف إليها دوال، مع أنماط تبقي كودك نظيفًا ومقروءًا.
- المصفوفاتكيف تعمل المصفوفات في JavaScript: إنشاؤها، الوصول للعناصر، الطول، push وpop، الفرق بين slice وsplice، وأفضل طرق التكرار عليها.
- Destructuringتعلّم كيف يعمل الـ destructuring في JavaScript لاستخراج القيم من الكائنات والمصفوفات، مع إعادة التسمية، القيم الافتراضية، الأنماط المتداخلة، وباراميترات الدوال.
- Object Spreadشرح عملي لمعامل النشر `...` مع الكائنات في JavaScript: كيف تنسخ كائن، تدمج كائنات، تستبدل خصائص، وتتجنّب فخ النسخ السطحي مع البيانات المتداخلة.
- دوال المصفوفاتدوال المصفوفات التي ستُغنيك عن معظم حلقات for — مثل map و filter و reduce و find و some و every — مع توضيح أيها يُعدّل المصفوفة الأصلية وأيها يُعيد مصفوفة جديدة.
- Map و Setتعرّف على كيفية عمل Map و Set في JavaScript، والفرق بينهما وبين الكائنات والمصفوفات العادية، ومتى يكون استخدامهما هو الخيار الأفضل.
- JSONتعرّف على كيفية تحويل كائنات JavaScript إلى JSON والعكس باستخدام JSON.stringify و JSON.parse، مع شرح دوال replacer و reviver والقيم التي تضيع أثناء التحويل.
- Optional Chainingكيف يتيح لك المعامل `?.` الوصول إلى خصائص الكائنات المتداخلة والمصفوفات والدوال دون أن ينهار الكود عند مصادفة `null` أو `undefined`.
- المعامل ??كيف يختار المعامل `??` القيمة الافتراضية فقط عندما تكون القيمة `null` أو `undefined`، ولماذا يتفوّق على `||` في معظم الحالات الواقعية.
الفئات والنماذج الأولية
- الكلاساتكيف تعمل الكلاسات في JavaScript فعلياً: الـ constructor والميثودز وحقول الـ instance والـ getters و setters، مع الفكرة الحقيقية وراء كلمة `class`.
- الوراثةتعرّف على كيفية عمل الوراثة في أصناف JavaScript: استخدام extends، واستدعاء super، وإعادة تعريف الدوال، ومتى يكون التركيب (composition) خياراً أفضل.
- static membersتعرّف على الدوال والخصائص الساكنة في أصناف JavaScript: متى تستخدم الكلمة المفتاحية `static`، وكيف يتصرّف `this`، ونمط المصانع (factory) الذي تتيحه.
- الحقول الخاصة #كيف تجعل البادئة `#` حقول ومُعامِلات الكلاس خاصة فعلياً في JavaScript، والفرق بينها وبين اصطلاح الشرطة السفلية `_` الذي لا يكفي لتحقيق خصوصية حقيقية.
- Prototypesتعرّف على الـ prototypes في جافا سكريبت وكيف تعمل سلسلة البروتوتايب في البحث عن الخصائص، وما علاقة صياغة `class` بهذه الآلية تحت الغطاء.
جافا سكريبت غير المتزامن
- حلقة الأحداثالنموذج الذهني وراء JavaScript غير المتزامنة: مكدس الاستدعاءات، طابور المهام، طابور المهام الصغرى، وكيف تربطها حلقة الأحداث معًا.
- دوال Callbackتعرّف على دوال الـ callback في JavaScript: كيف تُمرَّر الدوال كوسائط، الفرق بين المتزامن وغير المتزامن، نمط الخطأ أولاً، ولماذا دفع الـ callback hell المطورين للانتقال إلى Promises.
- Promisesشرح عملي للـ Promises في جافا سكريبت: الحالات الثلاث، تسلسل then و catch، الجمع بين عدة وعود عبر Promise.all، وكيف تصنع Promise بنفسك.
- async/awaitتعلّم كيف تعمل async/await في جافا سكريبت فعلياً: الدوال غير المتزامنة، انتظار الـ promises، التعامل مع الأخطاء عبر try/catch، وتنفيذ المهام بالتوازي.
- Fetch APIتعلّم كيفية استخدام Fetch API في جافا سكريبت لإرسال طلبات GET وPOST، قراءة JSON، التعامل مع الأخطاء بشكل صحيح، وإلغاء الطلبات البطيئة.
- أخطاء Asyncكيف تتدفق الأخطاء فعليًا في كود JavaScript غير المتزامن: try/catch مع async/await، و.catch على الـ Promises، والفخاخ التي تبتلع الأخطاء بصمت.
الوحدات والأدوات
- ES Modulesدليل عملي لوحدات ES في JavaScript: كيفية استخدام `import` و `export`، الفرق بين التصدير الافتراضي والمُسمّى، والتحميل الديناميكي عبر `import()`.
- CommonJS مقابل ESMنظامان للوحدات في JavaScript، لماذا يتعايشان حتى الآن، وكيف تختار بين require و import في مشاريع Node.
- أساسيات npmتعرّف على npm من الداخل: كيف تثبّت الحزم، وتستخدم npm init، وتتعامل مع تبعيات التطوير، وما قصة مجلد node_modules وملف القفل.
- package.jsonتعرّف على محتويات ملف package.json في مشاريع Node.js: الحقول المهمة، طريقة عمل السكربتات، ودلالات نطاقات semver التي تحدد الإصدار الذي يثبّته npm.
- بيئة Node.jsتعرّف على بيئة تشغيل Node.js، وكيف تختلف عن المتصفح، وأهم الواجهات المدمجة مثل process و fs والوحدات التي تجعل تشغيل JavaScript على الخادم ممكنًا.
الأخطاء وتصحيحها
- try/catchشرح عملي لطريقة عمل try/catch/finally في جافا سكريبت: كيف تلتقط الأخطاء، كائن الخطأ، إعادة الرمي، ومتى لا يكون try/catch هو الحل الصحيح.
- أنواع الأخطاءتعرّف على أنواع الأخطاء المدمجة في JavaScript، ومتى يظهر كل نوع، وكيف تقرأ رسالة الخطأ وتفهم سببها الحقيقي بدل التخمين.
- Console و DevToolsأدوات console وميزات DevTools التي تجعل تصحيح أخطاء JavaScript أسرع بكثير من رشّ console.log في كل مكان.
التعامل مع البيانات الحقيقية
- Regexشرح عملي للتعابير النمطية في JavaScript: طرق كتابة النمط، الدوال الأساسية test و match و replace، الرايات (flags)، ومجموعات الالتقاط مع أمثلة واقعية.
- التاريخ والوقتشرح عملي لكائن Date في JavaScript: كيف تنشئ التواريخ وتنسّقها وتقارنها، مع التعامل مع المناطق الزمنية وأبرز الأخطاء الشائعة.
- روابط URLتعرّف على كيفية تحليل الروابط وبنائها وتعديلها في JavaScript باستخدام `URL` و `URLSearchParams` — بدون Regex وبدون مشاكل في الترميز.