JavaScript: الدورة الكاملة للمبتدئين من 'الصفر إلى الاحتراف'
JavaScript: الدورة الكاملة للمبتدئين من 'الصفر إلى الاحتراف'
مرحبًا بك في دورة JavaScript الأكثر شمولاً المصممة خصيصًا للمبتدئين المطلقين. ستأخذك رحلة 'من الصفر إلى الاحتراف' هذه من فهم ماهية الكود إلى إتقان صياغة (Syntax) لغة JavaScript الحديثة، والتعامل مع نموذج كائن المستند (DOM) لبناء تطبيقات ويب تفاعلية، واستيعاب المفاهيم المتقدمة مثل البرمجة غير المتزامنة وميزات ES6. نقوم بتقسيم المواضيع المعقدة إلى 100 درس سهل الهضم للغاية، وغنية بالأمثلة والتمارين العملية، مما يضمن بناء أساس متين ضروري لتصبح مطور واجهات أمامية (Front-end) أو مطور متكامل (Full-stack) محترف.
الدروس
- مقدمة: ما هي JavaScript ولماذا يجب تعلمها؟
- إعداد بيئتك: VS Code وأدوات المتصفح
- تشغيل JavaScript: التنفيذ الداخلي، الخارجي، وعبر وحدة التحكم
- بيئة تشغيل JS (Runtime): كيف يتم تنفيذ الكود
- التعليقات وأفضل الممارسات لقراءة الكود
- مقدمة إلى الوضع الصارم (Strict Mode) ('use strict')
- المتغيرات 101: الكلمة المفتاحية القديمة 'var'
- المتغيرات 102: الكلمة المفتاحية الحديثة 'let' (نطاق الكتلة)
- المتغيرات 103: الكلمة المفتاحية 'const' (الثبات/عدم القابلية للتغيير)
- الإخراج الأساسي: استخدام console.log()، alert()، و prompt()
- مقدمة إلى أنواع بيانات JavaScript (نظرة عامة على الأنواع البدائية)
- نوع العدد (Number Type): الأعداد الصحيحة والفاصلة العائمة
- قيم الأرقام الخاصة: NaN و Infinity
- نوع السلسلة النصية (String Type): الاقتباس المفرد، المزدوج، والهروب من علامات الاقتباس
- السلاسل النصية الحديثة: Template Literals والاستيفاء (Interpolation) (ES6)
- خصائص وطرق السلسلة النصية الأساسية (الطول، تغيير الحالة)
- معالجة السلاسل النصية: التقطيع، البحث، والسلاسل الفرعية
- نوع المنطق (Boolean Type): صحيح (True)، خطأ (False)، والحالات المنطقية
- نوع null: الغياب الصريح للقيمة
- نوع undefined: الغياب الضمني للتعيين
- مقدمة إلى نوع Symbol (التفرد)
- نوع BigInt: التعامل مع الأرقام الكبيرة بشكل عشوائي
- فحص النوع باستخدام عامل التشغيل 'typeof'
- الإكراه على النوع (Type Coercion): التحويل الضمني للنوع
- تحويل النوع الصريح (Parsing and Casting)
- عوامل التشغيل الحسابية: الجمع، الطرح، الضرب، والقسمة
- عوامل التشغيل الخاصة بالتعيين: التعيين البسيط والاختصارات
- عوامل التشغيل الخاصة بالمقارنة: المساواة، عدم المساواة، أكبر من/أصغر من
- المساواة الصارمة (=== و !==): تجنب الإكراه على النوع
- عوامل التشغيل المنطقية: AND (&&)، OR (||)، و NOT (!)
- عامل التشغيل الثلاثي (Ternary Operator) (عامل التشغيل الشرطي)
- سير التحكم: تقديم عبارة 'if'
- سير التحكم: هيكل 'if...else'
- سير التحكم: سلاسل 'else if'
- سير التحكم: عبارات 'if' المتداخلة
- سير التحكم: عبارة 'switch'
- مقدمة للحلقات التكرارية: لماذا نحتاج إلى التكرار
- هيكل حلقة 'while'
- هيكل حلقة 'do...while'
- التحكم في الحلقات: الكلمتان المفتاحيتان 'break' و 'continue'
- تعريف الدوال: Function Declarations
- Function Expressions and Anonymous Functions
- Parameters and Arguments
- The 'return' statement: Outputting Values
- Default Parameters (ES6)
- Rest Parameters: Gathering Arguments into an Array
- Scope 101: Global vs. Local (Function Scope)
- Scope 102: Block Scope ('let' and 'const')
- Function Hoisting vs. Variable Hoisting
- Understanding Closures (The Fundamentals)
- Immediately Invoked Function Expressions (IIFEs)
- Introduction to Arrays: Ordered Lists of Data
- Accessing and Modifying Array Elements
- Adding Elements: push() and unshift()
- Removing Elements: pop() and shift()
- Iterating Arrays: The Traditional 'for' Loop
- Iterating Arrays: The Modern 'for...of' Loop (ES6)
- Array Iteration Methods: The forEach() Method
- Array Transformation: The map() Method
- Array Selection: The filter() Method
- Array Aggregation: The reduce() Method (Simple Use)
- Introduction to Objects: Key-Value Pairs
- Accessing Object Properties: Dot vs. Bracket Notation
- Adding, Modifying, and Deleting Properties
- Working with Nested Objects and Arrays
- Objects as Reference Types (vs. Primitive Values)
- Iterating Object Properties with 'for...in'
- Object Methods and the 'this' Keyword
- Object Utility Methods: keys(), values(), and entries()
- Constructor Functions (Legacy OOP)
- Introduction to ES6 Classes (Syntactic Sugar)
- Class Methods and Properties
- Inheritance with 'extends' and 'super'
- Getters and Setters
- Static Methods
- Understanding Prototypes (The Inheritance Chain)
- The Global Window Object (Browser Environment)
- What is the DOM? (Document Object Model)
- Selecting Elements: getElementById()
- Selecting Elements: querySelector() and querySelectorAll()
- Changing Text Content: textContent vs. innerHTML
- Modifying Attributes: getAttribute, setAttribute, removeAttribute
- Styling Elements: The .style Property
- Managing Classes: The classList Property
- Creating New Elements: createElement()
- Inserting Elements: appendChild and prepend
- Removing Elements from the DOM
- Introduction to Event Handling
- Attaching Listeners: The addEventListener() Method
- The Event Object and Event Properties
- Arrow Functions (Syntax and 'this' Difference)
- Destructuring Arrays and Objects
- The Spread Operator (...) for Copying and Combining
- Introduction to Asynchronous JavaScript (The Problem)
- Callbacks and the Dreaded Callback Hell
- Introduction to Promises (The Structure)
- Consuming Promises: then(), catch(), and finally()
- Error Handling with try...catch (Synchronous)
- Introduction to Modules (Import and Export Basics)
- Course Conclusion, Review, and Next Steps