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

الثوابت في لغة جافا سكريبتJavaScript Constants

سنتعلم في هذا الدرس الثوابت في لغة جافا سكريبت JavaScript Constants وهي ان نحفظ قيم يمكن استرجاعها في اي وقت وهذه القيم متوافقة مع انواع البيانات في لغة جافا سكريبت,سنلقي نظره عامه عن الثوابت, ثم نتطرق الي طريقة كتابتها في لغة الجافا سكريبت Constant Syntax,ثم بدون المتغيرات ما الذي يحدث Without a Constant, ايضاً سنتحدث عن قواعد او شروط الاسماء في الثوابت Constant naming rule, ثم عملية التهئية في الثوابت Declaring Constants,ثم عملية Initialization, ثم العمليات الحسابية باستخدام الثوابت في لغة جافا سكريبت JavaScript Arithmetic.

أقسام الدرس
10
الأمثلة
23
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
6,042
محتوى الدرس
في هذا الدرس 10تصفّح المواضيع

JavaScript Constants الثوابت في الجافاسكريبت

الثابت Constant وهي عكس المتغيرات في لغة البرمجة حيث يمكننا اجراء تحديثات او اعادة تعيين القيم في المتغيرات ولكن في الثوابت لا يمكننا فعل ذلك لان لا تسمح لغة جافا سكريبت بذلك فيما يخص إعادة الإسناد إلى الاسم.

تم انشاء ال Constant في الإصدار ES6 في عام 2015 ، والتي تستخدم لتعريف ثابت جديد في JavaScript, ,ويجب تهيئة الربط عند التصريح ولا يمكن إعادة إسناده لاحقًا. إذا كانت القيمة كائنًا أو مصفوفة فيمكن تعديل خصائصها أو عناصرها؛ const لا تجمّد المحتويات.

الثوابت Constant هي عبارة عن حاوية container يتم  تخزين  بداخلها قيمة معينة Value عن طريق ال Names الأسماء الخاصة بها ونستطيع استرجاعها في اي وقت ولا يمكن إعادة إسناد قيمة أخرى إلى الاسم أثناء التشغيل. 


الثوابت في الجافاسكريبت
الثوابت في الجافاسكريبت

Constant syntax تعريف او الاعلان علي متغير في لغة جافا سكريبت

تأتي الثوابت Constants علي هيئة:

  •  [ const ] Declare keyword وهو اعلان او اخبار المتصفحات بلغة جافا سكريبت اننا قمنا بانشاء ثابت جديد.
  • [ Name ] ينطبق علي الاسماء شروط وقواعد محددة سنتعرف عليها في هذا الدرس.
  • [ = ] assign Operators  وهي علامات رياضية لتتم عملية التعيين اي نعلن ان الثابت يساوي قيمة معينة ولا نستطيع اعادة تعيينة بعكس المتغير.
  • [ Value ] وهي القيم التي تخزن داخل الثوابت يمكن تخزين اي قيمه من ال Data Types في لغة الجافا سكريبت وتكون نصوص او رموز او كلمات محجوزه او مصفوفات arrays او كائنات objects او تساوي ثابت اخر.

النص يتم حفظه في منطقة الذاكره مع اسم الثابت. نستطيع  الوصول الي القيمة التي بداخل الثابت عن طريق اسم الثابت constant name.

Constant Syntax

HTML
const USERNAME = "Ahmed";
document.write("<b>"+ USERNAME +"<b><br>");

Constants naming rules قواعد او شروط تسمية الثوابت

يمكنك تسمية الثابت في لغة Java Script إلى أي شيء تريده، ولكن هناك قيود او شروط علي الاسماء. بشكل عام .

  • الأحرف اللاتينية والأرقام شائعة في الأسماء، لكن المعرّفات ليست مقصورة على ASCII؛ ولا يجوز أن يبدأ الاسم برقم.
  • تسمح JavaScript بكثير من أحرف Unicode، ومنها العربية؛ مثل let الاسم = "أحمد";. استخدام الأسماء اللاتينية عرف شائع في الفرق وليس شرطًا في اللغة.
  • لا تستخدم الأرقام في بداية الثوابت. هذا غير مسموح به ويسبب خطأ.
  • لا تستخدم رموز مثل @#%^&*-)( في اسماء الثوابت هذا غير مسموح به ويسبب خطأ.
  • الرمزين المسموح بهما هم علامة ال Dollar sign $ وعلامة  underscore _.
  • يمكن استخدام underscore _ في بداية الاسم أو وسطه؛ ولا تمنح الاسم خصوصية أو معنى خاصًا تلقائيًا.
  • يمكن ان يحتوي اسم الثابت Variable علي أحرف وأرقام لا تبدأ اسم الثابت Variable بأرقام.
  • الثوابت حساسة لحالة الأحرف - لذا فإن username ثابت مختلف عن USERNAME.
  • يفضل كتابة الثوابت بحروف كبيرة Capitalize لكي نفرق بينها وبين الثوابت.
  • تحتاج أيضًا إلى تجنب استخدام كلمات JavaScript المحجوزة كأسماء ثوابت - بهذا ، نعني الكلمات التي تشكل البنية الفعلية لجافا سكريبت !  مثل var و function و let و for كأسماء متغيرات او ثوابت. تتعرف المستعرضات عليها كعناصر تعليمات برمجية مختلفة ، وبالتالي ستحصل على أخطاء. هذه قائمة بالاسماء المحجوزه.

هذه نماذج من الاسماء المتطابقه مع الشروط.

HTML
const USERNAME= "Ahmed"; 
const USERNAME1 = "Mohamed"; 
const USERNAME2 = "Aly"; 
const _USERNAME = "Khaled"; 
const USER_NAME= "Sameh";
const $USERNAME= "Saleh";

هذه امثلة علي اسماء ثوابت متطابقة مع الشروط العلوية.

HTML
const AGE = 22;
const USERNAME = "closetag";
const MYNAME = "Ahmed Aly";
const COLOR = "blue";
const USER_NAME= "Mohamed Adly";
const PASSWORD = 258622;
const EMAIL= "[email protected]";
const EMAILADDRESS= "[email protected]";
const EMAIL_ADDRESS= "[email protected]";
const $EMAIL = "[email protected]";

المثال يتعمد أخطاء SyntaxError: 2 يبدأ برقم، وconst كلمة محجوزة، وMY AGE يحتوي مسافة. بقية الأسماء مثل A و_12 وDocument صالحة نحويًا؛ وقد تكون بعض الأسماء غير واضحة رغم صحتها.

HTML
const 2 = 10;
const A = 5;
const _12 = "ahmed";
const myage = 25;
const my_age = 25;
const  const = true;
const Document = 10;
const DSFGSFGSDFGDFGSDFGDFGD= "add";
const SDFASDFASDFASDFWERTWERWERWER= "SDFASDFASDFASDFWERTWERWERWER";
const MY AGE = "SDFASDFASDFASDFWERTWERWERWER";

استخدام علاامة الدولار dollar sign مع الثوابت في البدايه وفي النهاية وفي المنتصف.

HTML
const $USERNAME= "CloseTag";
const PASSWORD$ = 123;
const U$RL = "www.closetag.com";
document.write("<b>"+  $USERNAME +"<b><br>");
document.write("<b>"+  PASSWORD$+"<b><br>");
document.write("<b>"+  U$RL +"<b>");

Declaring constant تعريف الثوابت في لغة الجافا سكريبت

علي عكس المتغيرات فأن طريقة انشاء الثابت في ال JavaScript  تسمي declaring a constant  يشترط تعيين قيمة عند اعلان الثابت const keyword, وذا قمنا بالاعلان فقط بدون تعيين قيمة الثابت فسوف يحدث خطأ اثناء التشغيل, ايضاً بعكس المتغير لا تعني القيمة في هذة الحالة undefined.

الاعلان عن ثابت بدون تعيين قيمة في نفس السطر يحدث خطأ شاهدة في ال Console : هذا الخط Uncaught SyntaxError: Missing initializer in const declaration

HTML
const WEB_URL;

هذه هي الطريقة الصحيحه للأعلان ثم تعيين قيمة الثابت في نفس السطر.

HTML
const WEB_URL = "https://www.closetag.com";
document.write("<b>"+ WEB_URL +"<b>");

نستطيع تعريف مجموعة ثوابت في سطر واحد قد يبدو اقل في عدد السطور, ولكن لا نوصي بهذه الطريقه لانها غير قابلة للقراءه وغير منظمة Not Readable.

HTML
const DB_URL = 'localhost', DB_USER= "root", DB_PASSWORD= "toor";

تكتب ايضاً بهذه الطريق بدلاً من استخدام اكثر من مره مفتاح var keyword وهذه طريقة صحيحة ومستخدمة ايضاً.

HTML
const DB_URL = 'localhost', 
DB_USER= "root",
DB_PASSWORD= "toor";

Declaring constant errors الاخطاء الناتجه عن اعلان الثوابت

  • يجب تعيين قيمة الثابت الذي تقوم بتحديده ك " const " في نفس الخطوة التي تقوم بأنشائه خلالها.
  • لا يمكن تعديل قيمة الثابت من النوع "const" بعد انشائه وتعيين القيمة الخاصة به.
  • لا يمكنن تغيير نوع اي متغير الي const بعد انشائه.

غير مسموح

في هذه الحالة سوف يحدث خطأ لاننا قمنا بتعريف الثابت دون اضافة او تعيين قيمه له ثم قمنا بتغيير قيمته بعد ذلك فهذا شئ غير منطقي لان القيمه لا تتغير في الثوابت.

HTML
const WEB_URL;
WEB_URL = "https://www.closetag.com";
console.log(WEB_URL);

غير مسموح

لا نستطيع تعيين القيم بهذا الشكل لانه سوف يحدث خطأ اثناء التشغيل.

HTML
const DB_URL ,DB_URL ,DB_PASSWORD;

غير مسموح

لا نستطيع تعريفها بهذا الشكل ايضاً

HTML
const DB_URL ;
const DB_USER;
const DB_PASSWORD;

Uppercase constants الثوابت ذات الأحرف الكبيرة في الجافاسكريبت

هناك قاعدة متعارف عليها بين المبرمجين في معظم لغات البرمجة استخدام احرف كبيرة مع الثوابت فبدلاً من username بحروف صغيرة نستخدم USERNAME باحرف كبيرة وقبلها كلمة const.

استخدم احرف كبيرة عند الاعلان عن الثوابت

HTML
const $USERNAME= "CloseTag";
const PASSWORD$ = 123;
const U$RL = "www.closetag.com";

استخدم احرف صغيرة عند الاعلان عن الثوابت لا يعد خطأ ولكن قاعدة والشائع حروف كبيرة بتفرق بينها وبين المتغيرات.

HTML
const $username = "CloseTag";
const password$ = 123;
const u$rl = "www.closetag.com";

Initializing a constant - Initialization تهيئة او تعين الثابت في لغة جافا سكريبت

تهيئة الثوابت في لغة جافا سكريبت Initializing a constant :

يجب عند انشاء الثابت تعيين القيمة مباشرة حتي لا يحدث خطأ برمجي اثناء التشغيل ولا يمكن اعطاء قيمة اولية ثم تعديلها او تحديث القيمه لاحقاً بعكس المتغيرات variables.

  • يجب علينا عند انشاء الثوابت ان نقوم بعملية تهيئه في نفس الوقت وفي نفس السطر.

يوجد نوعمن التهيئة  Initializing وهناك نوعين منها وهم :

  1. Explicit : تطلق علي المتغيرات والثوابت التي تم تعيين قيمتهم initialization عند وقت انشائها declaration.
  2. implicit :  تطلق علي المتغيرات التي تم انشائها declaration في خطوة تسبق أضافة قيمة بداخلها initialization وهذه للمتغيرات فقط لا تتوافق مع الثوابت. 
تهيئة او تعين الثابت في لغة جافا سكريبت

Explicit

HTML
const WEB_URL = "www.closetag.com";

لا تعمل هذه الطريقة مع الثوابت Implicit

HTML
const WEB_UR;
WEB_URL = "www.closetag.com";

Arithmetic operators as Constants javascript العمليات الحسابية مع الثوابت بالجافا سكريبت

لغة ال JavaScript في الثوابت مثل الجبر يمكنك اجراء عمليات حسابية علي الثوابت عن طريق العلامات.

JavaScript Arithmetic Operators  عوامل الجافا سكريبت والثوابت: 

  1. Addition ( + ) : نستطيع جمع ثابتين أو اكثر في لغة جافا سكريبت عن طريق عامل الجمع ويجب الثابت يكون من النوع Number.
  2. Subtraction ( - ) : نستطيع طرح ثابتين أو اكثر في لغة جافا سكريبت عن طريق عامل الطرح ويجب الثابت يكون من النوع Number.
  3.  Multiplication (*) : نستطيع ضرب ثابتين أو اكثر في لغة جافا سكريبت عن طريق عامل الضرب ويجب الثابت يكون من النوع Number.
  4. Division (/) : نستطيع قسمة ثابتين أو اكثر في لغة جافا سكريبت عن طريق عامل القسمة ويجب الثابت يكون من النوع Number.
  5. Modulus (%) : نستطيع ان نحصل علي باقي القسمة بين ثابتين في لغة جافا سكريبت عن طريق عامل النسبة المئوية ويجب الثابت يكون من النوع Number.
العمليات الحسابية مع الثوابت بالجافا سكريبت

عملية الجمع والطرح Addition and subtraction في الثوابت بلغة جافا سكريبت

HTML
const PRICE = 1000;
const DISCOUNT = 200;
const SUB_TOTAL = PRICE - DISCOUNT;
const TAX = 14;
const TOTAL = SUB_TOTAL + TAX;
document.write("<b>  Sub Total :  "+ SUB_TOTAL +"<b><br>");
document.write("<b>  Total :  "+ TOTAL +"<b><br>");

عملية الضرب والقسمة Multiplication and Division في الثوابت بلغة جافا سكريبت

HTML
const PRICE = 1000;
const DISCOUNT = 200;
const QUANTATIY = 3 ;
const SUB_TOTAL = (QUANTATIY * PRICE ) - DISCOUNT ;
const TAX = 14;
const TERM = (SUB_TOTAL + TAX) / 2;
const TOTAL = TERM ;
document.write("<b>  Sub Total :  "+ SUB_TOTAL +"<b><br>");
document.write("<b>  Total :  "+ TOTAL +"<b><br>");

عملية خارج القسمة او المتبقي بعد قسمة عددين Modulus في الثوابت بلغة جافا سكريبت

HTML
const ALL_PRICE = 1000;
const PRODUCTS_NUMBER = 300;
const REMANING = ALL_PRICE % PRODUCTS_NUMBER ;
document.write("<b>  Remaining  :  "+ REMANING   +"<b><br>");

يمكن جمع متغيرين او اكثر اذا كانت القيمة نصوص ففي هذه الحاله لن تتم كعملية حسابية ولكن هي اضافة النصوص بجوار بعضها لبعض باستخدام علامة Addition ( + )

HTML
const FIRST_NAME = "Ahmed";
const LAST_NAME = "Hamza";
const FULL_NAME = FIRST_NAME + " " + LAST_NAME ;
document.write("<b>  Full Name Is  :  "+ FULL_NAME +"<b><br>");

Declare constant without the const Keyword انشاء ثابت بدون const Keyword

لإنشاء ربط ثابت استخدم const مع قيمة أولية. الإسناد إلى اسم دون تصريح لا ينشئ ربطًا ثابتًا.

في script تقليدي غير صارم، قد ينشئ الإسناد إلى اسم غير معلن خاصية على الكائن العام. هذا ليس تصريحًا بـvar أو let؛ وفي strict mode أو modules ينتج ReferenceError. استخدم تصريحًا صريحًا مناسبًا.

HTML
USERNAME = "closetag";
console.log(USERNAME);

Hoisting in constants in Java Script عملية الرفع في الثوابت في لغة جافا سكريبت

يسمح var بالوصول إلى الربط قبل موضع التصريح، ويبدأ بقيمة undefined. أما const فيبقى غير مهيّأ داخل منطقة Temporal Dead Zone (TDZ) حتى تنفيذ التصريح؛ والوصول إليه قبلها ينتج ReferenceError. يجب أن يتضمن تصريح const قيمة أولية حتى يكون المثال صالح الصياغة ويختبر TDZ فعلًا.

Hoisting

HTML
car = "Volvo";
document.write(car);
var car;

Temporal Dead Zone (TDZ): المثال التالي يتعمد ReferenceError عند الوصول إلى CAR قبل تهيئته.

HTML
CAR = "Volvo";
console.log(CAR);
const CAR = "BMW";

مشاركة

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

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