Javaمتغير البرنامج النصي: إعلان، تعيين قيمة مع مثال
⚡ ملخص ذكي
Javaتُخزّن متغيرات البرنامج النصي قيمًا مثل الأسماء والأرقام، أو نتيجة تعبير برمجي. ويؤدي تعريف متغير باستخدام var أو let أو const إلى حجز خانة مُسماة يمكن لبقية البرنامج النصي قراءتها وتحديثها.
تُستخدم المتغيرات لتخزين القيم (الاسم = "جون") أو التعبيرات (المجموع = س + ص). كل قيمة يحتفظ بها البرنامج النصي لاستخدامها لاحقًا - اسم المستخدم، المجموع التراكمي، علامة نعم أو لا - تُخزَّن في متغير، لذا فإن تعريفها وتسميتها بشكل جيد هو أول مهارة يجب اكتسابها. Javaسيناريو.
الإعلان عن المتغيرات في Javaسيناريو
قبل استخدام أي متغير، يجب أولاً تعريفه. يجب استخدام الكلمة المفتاحية var لتعريف متغير على النحو التالي:
var name;
يُنشئ التصريح وحده الاسم فقط. في هذه المرحلة، يكون المتغير موجودًا ولكنه يحمل القيمة الخاصة غير المُعرَّفة، لأنه لم تُضَف إليه أي قيمة بعد.
⚠️ ملاحظة حول الإصدار: var هي الكلمة المفتاحية الأصلية للتصريح، ولا تزال تعمل في جميع المتصفحات. أضافت ES6 (2015) اسمحوا و CONSTوهي الكلمات المفتاحية الحديثة Javaيستخدم البرنامج النصي. تتم مقارنة كليهما بالمتغير الموجود أسفل هذه الصفحة.
تعيين قيمة للمتغير
يمكنك إسناد قيمة للمتغير إما أثناء الإعلان عن المتغير أو بعد الإعلان عن المتغير.
var name = "John";
OR
var name; name = "John";
كلا الشكلين يؤديان إلى نفس النتيجة. علامة المساواة المفردة هي مهمة تشغيلينسخ القيمة الموجودة على يمينه إلى المتغير الموجود على يساره. وهو ليس اختبارًا للمساواة، التي تُكتب == أو === وتنتمي إلى عبارات شرطية.
متغيرات التسمية
على الرغم من أنه يمكنك تسمية المتغيرات كما تشاء، إلا أن من الممارسات البرمجية الجيدة إعطاء المتغيرات أسماءً وصفية وذات معنى. علاوة على ذلك، يجب أن تبدأ أسماء المتغيرات بحرف، وهي حساسة لحالة الأحرف. لذا، فإن المتغيرين studentname و studentName مختلفان لأن الحرف n في الاسم مختلف (n و N).
أربعة قواعد تحدد ما إذا كان الاسم قانونيًا أم لا:
- يجب أن يكون الحرف الأول حرفًا أو علامة دولار أو شرطة سفلية - وليس رقمًا أبدًا.
- بعد الحرف الأول، يُسمح باستخدام الأحرف والأرقام وعلامات الدولار والشرطات السفلية.
- لا يُسمح باستخدام المسافات، ولهذا السبب يتم دمج الفكرة المكونة من كلمتين لتصبح اسم الطالب بدلاً من تركها ككلمتين منفصلتين.
- لا يمكن إعادة استخدام الكلمات المحجوزة مثل var و let و const و class و return كأسماء.
بحسب العرف Javaتستخدم أسماء البرامج النصية نمط CamelCase، لذا فإن الكلمة الأولى تكون بأحرف صغيرة وكل كلمة لاحقة تبدأ بحرف كبير: firstName, totalPrice, isLoggedIn.
يُعرّف البرنامج النصي أدناه متغيرين، ويُطبّق عليهما خمسة عوامل حسابية، ويكتب كل نتيجة على الصفحة. جرّب ذلك بنفسك:
<html>
<head>
<title>Variables!!!</title>
<script type="text/javascript">
var one = 22;
var two = 3;
var add = one + two;
var minus = one - two;
var multiply = one * two;
var divide = one/two;
document.write("First No: = " + one + "<br />Second No: = " + two + " <br />");
document.write(one + " + " + two + " = " + add + "<br/>");
document.write(one + " - " + two + " = " + minus + "<br/>");
document.write(one + " * " + two + " = " + multiply + "<br/>");
document.write(one + " / " + two + " = " + divide + "<br/>");
</script>
</head>
<body>
</body>
</html>
var مقابل let مقابل const في اللغة الحديثة Javaسيناريو
لم يكن هناك سوى متغير واحد عندما Javaكُتبت لغة البرمجة النصية لأول مرة، ولديها عيبان قد يُفاجئان المبتدئين: إمكانية إعادة تعريفها تلقائيًا، وتجاهلها لحدود الكتل. أُضيفت الكلمتان let و const لمعالجة هذين العيبين. يُوضح الجدول أدناه الكلمات المفتاحية الثلاث جنبًا إلى جنب.
| السلوك | فار | اسمحوا | CONST |
|---|---|---|---|
| مجال | الوظيفة الكاملة | كتلة محيطة | كتلة محيطة |
| يمكن إعادة تعيينها | نعم | نعم | لا |
| يمكن إعادة الإعلان عنها في نفس النطاق | نعم | لا | لا |
| القيمة المطلوبة في سطر التصريح | لا | لا | نعم |
| اقرأ قبل إعلانها | القيمة المُعادة غير مُعرّفة | خطأ مرجعي | خطأ مرجعي |
عادة بسيطة تغطي جميع الحالات تقريبًا: الوصول إلى CONST أولاً، انتقل إلى اسمحوا اللحظة التي يتعين فيها تغيير قيمة ما بشكل حقيقي، مثل عداد داخل أحد... Javaحلقات البرمجة النصية، واحتفظ بالمتغير لقراءة التعليمات البرمجية القديمة بدلاً من كتابة تعليمات برمجية جديدة.
نطاق متغير والرفع في Javaسيناريو
يُحدد نطاق المتغيرات أي أجزاء من البرنامج النصي يمكنها رؤية متغير. ينتمي تعريف المتغير `var` إلى الدالة التي تحتويه، لذا فهو يُستثنى من أي كتلة شرطية `if` أو كتلة حلقة `for` داخل تلك الدالة. أما تعريف المتغير `let` أو `const` فينتمي إلى زوج الأقواس المعقوفة التي يقع بينهما، ويختفي خارجهما.
function demo() { if (true) { var wide = "visible throughout demo()"; let narrow = "visible only inside these braces"; } console.log(wide); console.log(narrow); }
تقوم الدالة console.log الأولى بطباعة السلسلة النصية. أما الثانية فتُطلق خطأ ReferenceError، لأن الكائن narrow لم يعد موجودًا بمجرد انتهاء كتلة if.
الرفع هذا هو النصف الثاني من القصة. Javaيسجل البرنامج النصي كل تعريف في نطاق معين قبل تنفيذ أي سطر منه. يتم تسجيل اسم المتغير وتعيينه إلى قيمة غير مُعرَّفة، لذا فإن قراءته مبكرًا مسموحة ولكنها غير مجدية. يتم تسجيل اسم المتغير `let` أو `const` بدون قيمة، وتُسمى الفجوة بين أعلى الكتلة وسطر التعريف بـ المنطقة الميتة الصدغية.
console.log(a); var a = 1; console.log(b); let b = 2;
يطبع السطر الأول قيمة غير مُعرَّفة. ويتوقف السطر الثالث عند عبارة "لا يمكن الوصول إلى 'b' قبل التهيئة" - وهو الخطأ الذي يجعل استخدام let أكثر أمانًا من استخدام var، لأنه يشير إلى الخطأ الحقيقي بدلًا من إخفائه.
الأخطاء الشائعة عند الإقرار Javaمتغيرات البرنامج النصي
تُشكّل خمس رسائل غالبية مخرجات وحدة التحكم التي يراها المبتدئون أثناء تعلم المتغيرات. تُشير كل رسالة إلى سبب مُحدد، لذا فإن الحل عادةً ما يكون سطرًا واحدًا.
| رسائل وحدة التحكم | سبب | حل |
|---|---|---|
| خطأ في بناء الجملة: تم تعريف المعرف 'x' مسبقًا | تم استخدام let أو const مرتين لنفس الاسم في كتلة واحدة | أعد استخدام المتغير الموجود، أو أعد تسمية المتغير الثاني |
| TypeError: التنازل إلى متغير ثابت | تم إعطاء قيمة جديدة لثابت | قم بتعريفها باستخدام let إذا كان يجب تغيير القيمة |
| خطأ مرجعي: لا يمكن الوصول إلى 'x' قبل التهيئة | تمت قراءة قيمة let أو const داخل المنطقة الزمنية الميتة | انقل القراءة أسفل سطر الإعلان |
| خطأ مرجعي: x غير مُعرّف | لم يُعلن عن الاسم مطلقاً، أو أنه كُتب بشكل خاطئ. | أعلن ذلك، أو صحح التهجئة وحالة الأحرف. |
| يظهر خطأ "غير معرف" حيث كان من المتوقع وجود قيمة. | تم تعريف المتغير ولكن لم يتم تعيين أي قيمة له. | قم بتعيين قيمة قبل القراءة الأولى |
إضافة عبارة "use strict" في بداية الملف تحوّل النسخة الصامتة من الحالة الرابعة - وهي إسناد قيمة إلى اسم لم يُصرّح عنه - إلى خطأ مرئي، ولهذا السبب يجب تضمينها في كل نص برمجي جديد. وتنتقل قواعد المتغيرات نفسها دون تغيير إلى المصفوفات, الأجسام، ورمز الخادم المكتوب لـ Node.js .
