Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ورقة JavaScript المرجعية

آخر تحديث

المتغيرات (let و const و var)

تعريف القيم؛ فضّل const، ثم let، وتجنّب var.

العمليةالصياغة
نطاق الكتلة، يمكن إعادة الإسنادlet count = 0;
نطاق الكتلة، لا يمكن إعادة الإسنادconst name = "Ada";
نطاق الدالة (قديم)var x = 1;
التعريف دون قيمةlet result;
تعريفات متعددةlet a = 1, b = 2;
كائن ثابت (محتوياته قابلة للتغيير)const user = {}; user.id = 1;

أنواع البيانات

الأنواع الأولية والمرجعية بالإضافة إلى كيفية فحصها.

النوعمثال
رقمlet n = 42;
سلسلة نصيةlet s = "hi";
قيمة منطقيةlet ok = true;
مصفوفةlet arr = [1, 2, 3];
كائنlet obj = { id: 1 };
Null / undefinedlet a = null;, let b;
فحص النوعtypeof n
التحويلNumber("7"), String(42), Boolean(0)

السلاسل النصية والقوالب الحرفية

بناء النص والتعامل معه.

العمليةالصياغة
قالب حرفيHi ${name}, age ${age} (ضعه بين علامات backtick)
الطولtext.length
الأحرف الكبيرة / الصغيرةtext.toUpperCase(), text.toLowerCase()
إزالة المسافاتtext.trim()
استبدال الكلtext.replaceAll("a", "b")
التقسيم إلى مصفوفةtext.split(",")
الاحتواءtext.includes("js")
التقطيعtext.slice(0, 3)

المصفوفات ودوالها

مجموعات مرتّبة والدوال التي تتكرر عليها.

العمليةالصياغة
الإضافة / الإزالة من النهايةarr.push(4), arr.pop()
الإضافة / الإزالة من البدايةarr.unshift(0), arr.shift()
تحويل كل عنصرarr.map(x => x * 2)
الإبقاء على العناصر المطابقةarr.filter(x => x > 0)
الاختزال إلى قيمة واحدةarr.reduce((sum, x) => sum + x, 0)
إيجاد عنصرarr.find(x => x.id === 1)
اختبار some / everyarr.some(f), arr.every(f)
فهرس قيمةarr.indexOf(3), arr.includes(3)
الدمج في سلسلة نصيةarr.join(", ")

الكائنات

مجموعات مفتاح-قيمة.

العمليةالصياغة
الإنشاءconst user = { id: 1, name: "Ada" };
الوصول إلى خاصيةuser.name, user["name"]
إضافة / تحديث خاصيةuser.age = 25;
حذف خاصيةdelete user.age;
الحصول على كل المفاتيح / القيمObject.keys(user), Object.values(user)
الحصول على المدخلاتObject.entries(user)
دمج الكائناتObject.assign({}, a, b)
نسخ سطحيconst copy = { ...user };

التحكم في التدفق

الشروط والحلقات.

العمليةالصياغة
If / else if / elseif (x > 0) { … } else { … }
الشرطي الثلاثيconst y = x > 0 ? 1 : 0;
Switchswitch (x) { case 1: … break; }
حلقة forfor (let i = 0; i < 5; i++) { … }
For-of (القيم)for (const item of arr) { … }
For-in (المفاتيح)for (const key in obj) { … }
حلقة whilewhile (x < 10) { … }

الدوال والدوال السهمية

تعريف كتل قابلة لإعادة الاستخدام والاستدعاء.

العمليةالصياغة
تعريف دالةfunction add(a, b) { return a + b; }
دالة سهميةconst add = (a, b) => a + b;
دالة سهمية بوسيط واحدconst sq = x => x * x;
دالة سهمية بلا وسائطconst now = () => Date.now();
وسيط افتراضيfunction f(x = 0) { … }
وسائط متبقية (rest)function f(...args) { … }
تُستدعى فورًا (IIFE)(() => { … })();

التفكيك والنشر (spread)

تفريغ القيم ونسخ/دمج الهياكل.

العمليةالصياغة
تفكيك المصفوفةconst [a, b] = arr;
تفكيك الكائنconst { id, name } = user;
إعادة التسمية أثناء التفريغconst { id: userId } = user;
قيمة افتراضيةconst { age = 0 } = user;
نشر مصفوفةconst all = [...a, ...b];
نشر كائنconst next = { ...user, age: 25 };
المتبقي في التفكيكconst [first, ...rest] = arr;

الوعود (Promises) و async/await

التعامل مع العمل غير المتزامن مثل طلبات الشبكة.

العمليةالصياغة
دالة asyncasync function load() { … }
انتظار وعدconst data = await fetch(url);
Then / catchpromise.then(res => …).catch(err => …)
Try / catch مع awaittry { await f(); } catch (e) { … }
الحلّ / الرفضPromise.resolve(1), Promise.reject(err)
انتظار الكلawait Promise.all([a, b])
أول من ينتهيawait Promise.race([a, b])

صياغة JavaScript الحديثة التي تستخدمها أكثر من غيرها، على صفحة واحدة. ورقة JavaScript المرجعية هذه هي مرجع سريع لـ ES6+ اليومية - تعريف المتغيرات، ودوال السلاسل النصية والمصفوفات، والكائنات، والدوال السهمية، والتفكيك، و async/await.

كل ما هنا هو JavaScript قياسية تعمل في المتصفحات الحديثة و Node.js. انسخ ما تحتاجه، أو جرّب أيّ مقطع برمجي مباشرة في playground الخاص بـ JS - دون الحاجة إلى تثبيت أي شيء.

الأسئلة الشائعة حول ورقة JavaScript المرجعية

هل ورقة JavaScript المرجعية هذه مجانية؟
نعم. ورقة JavaScript المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن صياغة أو دالة مصفوفة أو نمط غير متزامن.
ما الفرق بين == و === في JavaScript؟
== هي المساواة المرنة: تحوّل المعاملات إلى النوع نفسه قبل المقارنة، لذا 0 == "0" تساوي true. أمّا === فهي المساواة الصارمة: تقارن القيمة والنوع معًا دون تحويل، لذا 0 === "0" تساوي false. فضّل ===!==) في جميع الحالات تقريبًا - فهي متوقّعة وتتجنّب التحويلات المفاجئة.
ما الفرق بين let و const و var؟
تتمتّع const و let بنطاق الكتلة وقد أُضيفتا في ES6؛ بينما تتمتّع var بنطاق الدالة وهي أقدم. استخدم const للقيم التي لا تعيد إسنادها أبدًا، و let للقيم التي تعيد إسنادها، وتجنّب var لتفادي أخطاء الرفع (hoisting) والنطاق. لاحظ أن كائن أو مصفوفة const لا يزال بإمكان محتواه أن يتغيّر - الثابت هو الارتباط (binding) فقط.
هل يمكنني التدرّب على JavaScript عبر الإنترنت؟
نعم. افتح playground الخاص بـ JS لتشغيل أيّ مقطع برمجي من هذه الورقة المرجعية في متصفحك - دون الحاجة إلى تثبيت أي شيء. وعندما ترغب في تعلّم منظّم، تأخذك دورة JavaScript التفاعلية المجانية من Coddy من المتغيرات والحلقات إلى دوال المصفوفات و async/await خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من الأساسيات (المتغيرات وأنواع البيانات والسلاسل النصية) وصولًا إلى التفكيك و async/await، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى ميزات ES6+ الحديثة.
Coddy programming languages illustration

تعلّم JavaScript مع Coddy

ابدأ الآن