القوالب النصية والسلسلة الاختيارية
ضمّن التعبيرات في السلاسل النصية باستخدام القوالب النصية، وادخل بأمان إلى الخصائص المتداخلة باستخدام ?., واستخدم التقييم القصير مع عامل الدمج الصفري ??.
القوالب النصية والسلسلة الاختيارية درس مجاني في Frontend Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Frontend Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Frontend Academy 4 دروس في المجموع.
القوالب النصية: سلاسل Backtick
تدعم القوالب النصية (سلاسل backtick) السلاسل متعددة الأسطر والتعبيرات المضمّنة. وهي تستبدل دمج السلاسل باستخدام + وتجعل الهدف أوضح.
// String concatenation (old way):
const msg = 'Hello, ' + name + '! You have ' + count + ' messages.';
// Template literal (modern):
const msg2 = `Hello, ${name}! You have ${count} messages.`;القوالب النصية متعددة الأسطر
تحافظ القوالب النصية على أسطر النص الجديدة والمسافات البادئة. فلا حاجة بعد الآن إلى \n أو دمج السلاسل عبر عدة أسطر.
const html = `
<div class="card">
<h2>${title}</h2>
<p>${body}</p>
</div>
`;
const sql = `
SELECT *
FROM users
WHERE age > ${minAge}
ORDER BY name
`;التعبيرات في القوالب النصية
يمكن وضع أي تعبير في JavaScript داخل ${}، مثل العبارات الشرطية الثلاثية واستدعاءات الدوال والعمليات الحسابية واستدعاءات الأساليب.
const tax = 0.2;
const price = 50;
const receipt = `
Subtotal: $${price}
Tax (${tax * 100}%): $${price * tax}
Total: $${price * (1 + tax)}
${isPaid ? 'PAID' : 'UNPAID'}
`;القوالب النصية الموسومة
يستدعي القالب النصي الموسوم دالةً، ويمرر إليها أجزاء السلسلة والقيم المُدرجة كمعاملات. وتستخدمه مكتبات مثل styled-components وGraphQL (gql``) وsql`` لبناء الاستعلامات بأمان.
function highlight(strings, ...values) {
return strings.reduce((acc, str, i) =>
acc + str + (values[i] !== undefined ? `<mark>${values[i]}</mark>` : ''), '');
}
const msg = highlight`Hello ${name}, you have ${count} messages.`;التسلسل الاختياري: ?.
يعيد عامل التسلسل الاختياري ?. القيمة undefined دون إلقاء TypeError إذا كان الجانب الأيسر null أو undefined، وذلك من خلال إيقاف التقييم مبكرًا. ويلغي الحاجة إلى فحوصات null الاحترازية.
const user = null;
// Without optional chaining (throws TypeError):
// user.profile.avatar
// With optional chaining (returns undefined):
const avatar = user?.profile?.avatar;
console.log(avatar); // undefined — no errorاستدعاءات الأساليب الاختيارية
يستدعي obj?.method() الأسلوب فقط إذا لم تكن obj تساوي null أو undefined. وإذا كانت obj تساوي null، فإنه يعيد undefined دون إلقاء خطأ.
const timer = getTimer(); // might return null
timer?.start(); // only calls start() if timer exists
// Also works on array access:
const firstItem = arr?.[0]; // undefined if arr is nullالدمج مع Nullish: ??
يعيد عامل الدمج مع Nullish ?? الجانب الأيمن فقط إذا كان الجانب الأيسر null أو undefined (وليس قيمة غير صادقة). وعلى خلاف ||، لا يعامل 0 أو '' على أنهما Nullish.
const port = config.port ?? 3000; // 3000 only if port is null/undefined
const name = user.name ?? 'Anonymous';
// Compare with ||:
console.log(0 ?? 'default'); // 0 (not nullish)
console.log(0 || 'default'); // 'default' (falsy!)الإسناد مع Nullish: ??=
تُسنِد a ??= b القيمة b إلى a فقط إذا كانت a تساوي null أو undefined. وهي اختصار لـ a = a ?? b. وتفيد في تهيئة خصائص الكائنات بصورة مشروطة.
let cache = {};
function getUser(id) {
cache[id] ??= fetchUser(id); // only fetch if not cached
return cache[id];
}عوامل الإسناد المنطقية
يسند &&= القيمة فقط إذا كان الجانب الأيسر صادقًا. ويسند ||= القيمة فقط إذا كان الجانب الأيسر غير صادق. وبالاشتراك مع ??=، تجعل هذه العوامل عمليات الإسناد المشروطة موجزة.
user.name ||= 'Anonymous'; // set if falsy
user.role &&= user.role.toLowerCase(); // transform if existsدمج ?. و ??
ادمج التسلسل الاختياري والدمج مع Nullish للوصول الآمن إلى الخصائص مع توفير قيمة افتراضية.
const city = user?.address?.city ?? 'Unknown';
const total = cart?.items?.length ?? 0;أساليب السلاسل النصية التي تحتاج إلى معرفتها
من أساليب السلاسل النصية الشائعة: trim() وtrimStart() وtrimEnd() وpadStart() وpadEnd() وstartsWith() وendsWith() وincludes() وreplaceAll() وat().
const str = ' Hello World ';
str.trim(); // 'Hello World'
str.includes('World'); // true
'5'.padStart(3, '0'); // '005'
'abc'.at(-1); // 'c'
'aabbcc'.replaceAll('b', 'x'); // 'aaxxcc'تحقق سريع
ماذا تعيد const val = obj?.foo?.bar ?? 'default' إذا كانت obj تساوي null؟
مراجعة: القوالب النصية والتسلسل الاختياري
تدعم سلاسل Backtick التعبيرات والعمل عبر عدة أسطر. وتتيح القوالب الموسومة إنشاء DSLs. ويتيح ?. الوصول الآمن إلى الخصائص دون فحوصات null. ويوفر ?? قيمة افتراضية عندما تكون القيمة null أو undefined (وليس فقط عندما تكون غير صادقة). ادمج هذه الميزات للوصول الآمن والواضح إلى البيانات مع قيم افتراضية.
تعلم HTML مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 41
- الدروس
- 163
الأسئلة الشائعة
هل درس «القوالب النصية والسلسلة الاختيارية» مجاني؟
نعم — نص درس «القوالب النصية والسلسلة الاختيارية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Frontend Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ماذا ستتعلم في «القوالب النصية والسلسلة الاختيارية»؟
ضمّن التعبيرات في السلاسل النصية باستخدام القوالب النصية، وادخل بأمان إلى الخصائص المتداخلة باستخدام ?., واستخدم التقييم القصير مع عامل الدمج الصفري ??. تتمرن على Frontend Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Frontend Academy؟
لا تُشترط خبرة سابقة. Frontend Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «القوالب النصية والسلسلة الاختيارية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Frontend Academy هذا؟
نعم. كل درس في Frontend Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساليب المصفوفات: map وfilter وreduce وfind
- تفكيك الكائنات وعامل الانتشار
- القوالب النصية والسلسلة الاختيارية
- الوحدات: import وexport