انتقل إلى محتوى الدرس
الدرس 07
تاريخ النشر: تاريخ التحديث:
دورة جافا سكريبت

الثوابت بالكلمة المحجوزة const في JavaScriptJavaScript Constants طريقة منع إعادة الإسناد TypeError، ومفهوم الثوابت البرمجية وفائدتها، والتصريح عن ثوابت const

أتقن تعريف الثوابت في JavaScript بالكلمة const: إلزامية التهيئة الفورية، الحماية من إعادة الإسناد عبر TypeError، عزل النطاق الكتلي، وأعراف تسمية الثوابت الاحترافية.
أقسام الدرس
6
الأمثلة
2
اللغة
العربية
المشاهدات
6,409
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

في التطبيقات العملية لا ينبغي لكثير من القيم المسماة أن تتبدل بعد إنشائها، مثل نسبة الضريبة أو الحد الأقصى لحجم الملف أو رابط الخدمة الأساسي. لذلك قدم معيار ES6 الكلمة المحجوزة const لإنشاء روابط ثابتة غير قابلة لإعادة الإسناد.

يمنح استخدام const ضمانة فورية للمحرك ولفريق العمل معاً: بمجرد ربط هذا الاسم بقيمته، لن يُسمح بتغيير إسناده إلى قيمة أخرى طوال عمر نطاقه.

مخطط آلية عمل الثوابت const في JavaScript: التهيئة الفورية الإلزامية وقفل الرابط ومنع إعادة الإسناد

بخلاف var، يشترط التصريح بالكلمة const إسناد القيمة الابتدائية فوراً في التعليمة نفسها دون تأجيل؛ فكتابة const MAX_SEATS; بلا قيمة تسبب خطأ صياغة فورياً SyntaxError يمنع تشغيل السكربت من الأساس.

JavaScript
const VAT_RATE = 0.15;
const itemPrice = 200;
const finalPrice = itemPrice + (itemPrice * VAT_RATE);
document.getElementById('const-out').textContent =
  'Final Total: ' + finalPrice + ' SAR';

إذا حاول أي سطر لاحق الكتابة فوق الثابت عبر معامل التعيين مثل VAT_RATE = 0.05; يوقف المحرك العملية في الحال برسالة TypeError: Assignment to constant variable؛ وهو ما يحمي المعادلات المالية والإعدادات الحساسة من التغيير غير المقصود.

تشكل كل فتحة وإغلاق للأقواس المعقوفة { ... } كتلة برمجية مستقلة (Block). وبخلاف var تتمتع ثوابت const بنطاق كتلي معزول؛ إذ تولد داخل حدود الكتلة وتنتهي بانتهاء القوس } دون أن تتسرب للخارج أو تلوث الكائن window.

JavaScript
const badgeText = 'Global Plan';
{
  const badgeText = 'Promo Block Plan';
  console.log(badgeText);
}
document.getElementById('scope-out').textContent = badgeText;

تعتمد المشاريع الاحترافية في JavaScript أسلوبين واضحين لتسمية ثوابت const تبعاً لطبيعة القيمة المخزنة:

طبيعة الثابت البرمجيأسلوب التسمية القياسيأمثلة تطبيقية واضحة
الإعدادات الثابتة المعروفة مسبقاًأحرف كبيرة بشرطة سفلية UPPER_SNAKE_CASEconst MAX_RETRIES = 3;، const VAT_RATE = 0.15;
النتائج المحسوبة وعناصر الصفحةأسلوب الجمل camelCaseconst netTotal = price * qty;، const boxEl = document.getElementById("b");

تجمع أدلة البرمجة القياسية الحديثة على قاعدة عملية بسيطة: ابدأ دائماً باستخدام const خياراً افتراضياً لكل قيمة جديدة تعرفها؛ فعندما تقسم المعادلة إلى خطوات ثابتة متدرجة مثل subtotal ثم taxAmount ثم grandTotal يصبح تتبع الكود أوضح وأخلى من المفاجآت.

أما القيم التي تحتاج فعلياً إلى تحديث متكرر كالعدادات، فلها أداة حديثة مخصصة سنتقنها في الدرس التالي مباشرةً.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس إنشاء الروابط الثابتة عبر const، وقاعدة التهيئة الفورية الإلزامية، والحماية من إعادة الإسناد عبر TypeError، وعزل النطاق الكتلي داخل { ... }، وأعراف التسمية القياسية. الخطوة التالية: انتقل الآن إلى درس «المتغيرات بالكلمة المحجوزة let في JavaScript» لتعريف المتغيرات الحديثة القابلة للتحديث بأمان.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 const Binding الرابط الثابت const
معرف ذو نطاق كتلي يُهيأ بقيمة فور التصريح عنه ولا يُسمح بإعادة إسناد قيمة جديدة إليه لاحقاً.
للمراجعة
02 Block Scope النطاق الكتلي Block Scope
حصر وجود المتغير أو الثابت وإمكانية قراءته داخل حدود الأقواس المعقوفة { ... } التي عُرّف بداخلها فقط.
للمراجعة
03 TypeError خطأ النوع TypeError
خطأ وقت التشغيل يطلقه المحرك عند تنفيذ عملية غير مسموحة على القيمة مثل محاولة إعادة إسناد ثابت const.
للمراجعة
04 UPPER_SNAKE_CASE التسمية الكبيرة UPPER_SNAKE_CASE
أسلوب تسمية بأحرف إنجليزية كبيرة تفصل بينها شرطة سفلية يُعتمد للثوابت الرقمية والإعدادات المعروفة مسبقاً.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 ES6 ES6
ECMAScript 2015 (6th Edition)
التحديث الجوهري لمعيار JavaScript عام 2015 الذي قدم الكلمة const والنطاق الكتلي للغة.
للمراجعة
02 JIT JIT
Just-In-Time Compilation
تقنية الترجمة الفورية داخل محركات المتصفحات لتسريع تنفيذ المقاطع البرمجية المتكررة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اختر التبويب الثاني في محاكي الثوابت لملاحظة إطلاق TypeError فور محاولة تغيير قيمة الثابت PORT.

  2. افتح مثال حساب الضريبة بـ const في محرر التجربة وعدّل itemPrice إلى 400 للتحقق من تحديث الإجمالي النهائي.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

ماذا يحدث عند كتابة const API_VERSION; دون إسناد قيمة ابتدائية في السطر نفسه؟

02

ما نوع الخطأ الذي يطلقه المحرك أثناء التشغيل عند محاولة إعادة إسناد قيمة جديدة لثابت const؟

03

الثابت المعرف بالكلمة const داخل أقواس معقوفة { ... } يتمتع بنطاق كتلي ولا يمكن الوصول إليه خارج تلك الكتلة.

04

أي أسلوب تسمية يُتبع عرفاً للإعدادات الثابتة المعروفة قبل التشغيل مثل نسبة الضريبة أو حد المحاولات؟

05

الثوابت المعرفة بالكلمة const في المستوى الأعلى تتحول تلقائياً إلى خصائص داخل الكائن العام window مثل var.

06

ما أسلوب التسمية المفضل عند حفظ نتيجة محسوبة وقت التشغيل أو مرجع عنصر صفحة داخل ثابت const؟

07

توصي هندسة JavaScript الحديثة باعتماد const خياراً افتراضياً لكل قيمة لا تحتاج إلى إعادة إسناد لاحقاً.

08

في الكود const x = 10; { const x = 99; } console.log(x); ما القيمة التي يطبعها السطر الأخير؟

09

أُضيفت الكلمة المحجوزة const إلى لغة JavaScript ضمن إصدار ECMAScript 2015 المعروف بـ ES6.

10

لماذا لا يغني تعريف السعر بـ const في المتصفح عن التحقق الأمني من السعر داخل الخادم؟