Kodokon kodokon.com

الدوال السهمية والنطاق والقوالب النصية

أتقن الصياغة السهمية ونطاق الكتلة والإغلاقات، ثم ابنِ نصوصًا ديناميكية باستخدام القوالب النصية.

8 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

الدوال السهمية موجودة في كل مكان في الشيفرة الحديثة: نداءات map وfilter، ومستمعو الأحداث، والوعود. قوّتها: صياغة مضغوطة مع إعادة ضمنية عندما يتّسع الجسم لتعبير واحد. وبمجرد أن تفتح أقواسًا معقوفة، يصبح return إلزاميًا من جديد.

JAVASCRIPT
const double = (n) => n * 2;

const isAdult = (user) => user.age >= 18;

const buildUser = (name) => ({ name, active: true });

const sum = (a, b) => {
  const total = a + b;
  return total;
};

console.log(double(21)); // 42
console.log(buildUser("Ana").active); // true
إعادة ضمنية على تعبير، وإعادة صريحة مع الأقواس المعقوفة.

يحدّد النطاق المكان الذي يكون فيه المتغير مرئيًا. مع let وconst، يوجد المتغير المُعرَّف داخل كتلة (if أو for أو أقواس معقوفة) داخل تلك الكتلة فقط. آلية أساسية أخرى: تحتفظ الدالة بالوصول إلى متغيرات النطاق الذي أُنشئت فيه، حتى بعد انتهاء ذلك النطاق. هذا هو الإغلاق، وهو ما يجعل العدّادات والذواكر المؤقتة ومديري الحالة تعمل.

JAVASCRIPT
function createCounter() {
  let count = 0;
  return () => {
    count += 1;
    return count;
  };
}

const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
تحتفظ الدالة المُعادة بالوصول إلى count: هذا هو الإغلاق.

القوالب النصية، المحدَّدة بعلامات backtick، بديل أفضل بكثير عن الدمج النصي. تُدرج تعبيرًا باستخدام ${...}، وتُحفظ فواصل الأسطر كما هي، ما يجعلها مثالية لبناء الرسائل أو مقاطع HTML.

JAVASCRIPT
const user = { firstName: "Nadia", cartCount: 3 };

const message = `Hello ${user.firstName}, you
have ${user.cartCount} items in your cart.`;

console.log(message);
استكمال بيني ونصوص متعددة الأسطر من دون أي دمج.

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. أيّ صياغة تُعيد كائنًا بشكل صحيح من دالة سهمية بإعادة ضمنية؟
    • (name) => { name: name }
    • (name) => ({ name })
    • (name) => return { name }
  2. هل يمكن الوصول إلى متغير مُعرَّف بـ let داخل كتلة if بعد تلك الكتلة؟
    • نعم، تمامًا كما مع var
    • لا، نطاقه محصور بالكتلة
    • فقط إذا كان قد هُيّئ
  3. أيّ محرف يحدّد قالبًا نصيًا؟
    • علامة الاقتباس المفردة
    • علامة الاقتباس المزدوجة
    • علامة backtick