الأقسام الكتلية في JavaScript

من موسوعة حسوب
مراجعة 15:38، 28 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الأقسام الكتلية (block statement) تُستخدَم لتجميع عدِّة تعابير برمجية معًا، ويُعرَّف القسم بزوجٍ من الأقواس المعقوفة {}، وقد يُضاف قبله لافتة (label).

البنية العامة

قسم كتلي دون لافتة:

{
  StatementList
}

قسم كتلي مع لافتة:

LabelIdentifier: {
  StatementList
}

StatementList

التعابير البرمجية المجمَّعة ضمن القسم الكتلي.

LabelIdentifier

لافتة label اختيارية يمكن استخدامها لتسهيل التعرّف بصريًا على القسم، أو كوجهة للتعبير break.

الوصف

تسمح الأقسام الكتلي لك باستخدام أكثر من تعبير برمجي في المواضع التي تتوقع JavaScript أن تتلقى تعبيرًا برمجيًا وحيدًا؛ لاحظ أنَّ تجميع أكثر من تعبير برمجي في أقسام هو أمرٌ شائعٌ في JavaScript، والسلوك المقابل لهذا السلوك هو استخدام التعبير البرمجي الفارغ (empty statement) الذي يسمح لك بعدم توفير تعبير برمجي مع أنَّه مطلوب.

أمثلة

استخدام الأقسام الكتلية مع var

المتغيرات التي يُصرَّح عنها باستخدام var ليس لها مجال كتلي (block scope)، فالمتغيرات المُعرَّفة ضمن قسم كتلي (block) سيكون مجالها ضمن الدالة أو السكربت، وسيبقى أثر ضبطها إلى ما بعد انتهاء القسم الكتلي. مثال:

var x = 1;
{
  var x = 2;
}
console.log(x); // الناتج 2

ناتج تنفيذ السكربت السابق هو 2، لأن التعبير var x الموجود داخل القسم الكتلي له نفس مجال (scope) التعبير var x الموجود خارج القسم.

استخدام الأقسام الكتلية مع let و const

المُعرِّفات التي يُصرَّح عنها باستخدام let و const ستملك مجالًا كتليًا:

let x = 1;
{
  let x = 2;
}
console.log(x); // الناتج 1

لاحظ أنَّ التعبير x = 2 هو خاص بالمجال الكتلي الذي عُرِّفَ فيه. الأمر مشابهٌ للمُعرِّفات التي يُصرَّح عنها باستخدام const:

const c = 1;
{
  const c = 2;
}
console.log(c); // الناتج 1 ولن تظهر رسالة خطأ

لاحظ أنَّ الثابت const c = 2 لن يُسبِّب برمي الخطأ SyntaxError: Identifier 'c' has already been declared لأنه مُعرَّفٌ في مجالٍ خاصٍ به.

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم

مصادر ومواصفات