الأقسام الكتلية في JavaScript
الأقسام الكتلية (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 |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | نعم | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 3rd Edition.
- معيار ECMAScript 1st Edition .