Javaمتغير البرنامج النصي: إعلان، تعيين قيمة مع مثال

⚡ ملخص ذكي

Javaتُخزّن متغيرات البرنامج النصي قيمًا مثل الأسماء والأرقام، أو نتيجة تعبير برمجي. ويؤدي تعريف متغير باستخدام var أو let أو const إلى حجز خانة مُسماة يمكن لبقية البرنامج النصي قراءتها وتحديثها.

  • 🔘 إعلان: تقوم الكلمة المفتاحية var أو let أو const بإنشاء الاسم قبل أن يقوم أي سطر من التعليمات البرمجية بقراءته أو كتابته.
  • ☑️ إسناد قيمة: تقوم علامة المساواة المفردة بنسخ قيمة إلى المتغير، سواء في سطر الإعلان أو لاحقًا.
  • ✅ التسمية: تبدأ الأسماء بحرف أو علامة الدولار أو الشرطة السفلية، وتُعتبر الأحرف الكبيرة والصغيرة مختلفة.
  • 🧪 الكلمات المفتاحية الحديثة: يناسب const القيم التي لا تتغير أبدًا، بينما يناسب let القيم التي تتغير، أما var فيبقى موجودًا بشكل أساسي في البرامج النصية القديمة.
  • 🛠️ مجال العمل let و const تبقى داخل الأقواس المحيطة بها، بينما يصل var إلى الدالة المحيطة بأكملها.
  • 📌 الأخطاء الشائعة: إعادة تعيين قيمة ثابتة، أو قراءة قيمة let مبكراً جداً، أو حذف الكلمة المفتاحية، كل منها يؤدي إلى ظهور خطأ مميز.

إعلان أ Javaمتغير البرنامج النصي وتعيين قيمة له

تُستخدم المتغيرات لتخزين القيم (الاسم = "جون") أو التعبيرات (المجموع = س + ص). كل قيمة يحتفظ بها البرنامج النصي لاستخدامها لاحقًا - اسم المستخدم، المجموع التراكمي، علامة نعم أو لا - تُخزَّن في متغير، لذا فإن تعريفها وتسميتها بشكل جيد هو أول مهارة يجب اكتسابها. Javaسيناريو.

الإعلان عن المتغيرات في Javaسيناريو

قبل استخدام أي متغير، يجب أولاً تعريفه. يجب استخدام الكلمة المفتاحية var لتعريف متغير على النحو التالي:

var name;

يُنشئ التصريح وحده الاسم فقط. في هذه المرحلة، يكون المتغير موجودًا ولكنه يحمل القيمة الخاصة غير المُعرَّفة، لأنه لم تُضَف إليه أي قيمة بعد.

⚠️ ملاحظة حول الإصدار: var هي الكلمة المفتاحية الأصلية للتصريح، ولا تزال تعمل في جميع المتصفحات. أضافت ES6 (2015) اسمحوا و CONSTوهي الكلمات المفتاحية الحديثة Javaيستخدم البرنامج النصي. تتم مقارنة كليهما بالمتغير الموجود أسفل هذه الصفحة.

تعيين قيمة للمتغير

يمكنك إسناد قيمة للمتغير إما أثناء الإعلان عن المتغير أو بعد الإعلان عن المتغير.

var name = "John";

OR

var name;

name = "John";

كلا الشكلين يؤديان إلى نفس النتيجة. علامة المساواة المفردة هي مهمة تشغيلينسخ القيمة الموجودة على يمينه إلى المتغير الموجود على يساره. وهو ليس اختبارًا للمساواة، التي تُكتب == أو === وتنتمي إلى عبارات شرطية.

متغيرات التسمية

على الرغم من أنه يمكنك تسمية المتغيرات كما تشاء، إلا أن من الممارسات البرمجية الجيدة إعطاء المتغيرات أسماءً وصفية وذات معنى. علاوة على ذلك، يجب أن تبدأ أسماء المتغيرات بحرف، وهي حساسة لحالة الأحرف. لذا، فإن المتغيرين studentname و studentName مختلفان لأن الحرف n في الاسم مختلف (n و N).

أربعة قواعد تحدد ما إذا كان الاسم قانونيًا أم لا:

  1. يجب أن يكون الحرف الأول حرفًا أو علامة دولار أو شرطة سفلية - وليس رقمًا أبدًا.
  2. بعد الحرف الأول، يُسمح باستخدام الأحرف والأرقام وعلامات الدولار والشرطات السفلية.
  3. لا يُسمح باستخدام المسافات، ولهذا السبب يتم دمج الفكرة المكونة من كلمتين لتصبح اسم الطالب بدلاً من تركها ككلمتين منفصلتين.
  4. لا يمكن إعادة استخدام الكلمات المحجوزة مثل 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 .

الأسئلة الشائعة

أيا منهم. Javaيتم تحديد أنواع البيانات في البرنامج النصي ديناميكيًا، لذا قد يحتوي متغير واحد على رقم، ثم سلسلة نصية، ثم كائن. يُحدد التصريح اسم المتغير، وليس نوعه. استخدم دالة typeof للتحقق من نوع البيانات التي يحتويها المتغير في أي لحظة.

Javaيُنشئ البرنامج النصي متغيرًا عامًا ضمنيًا، قد يقوم كود آخر بالكتابة فوقه عن طريق الخطأ. إضافة عبارة "use strict" في بداية الملف تُحوّل السطر نفسه إلى خطأ مرجعي (ReferenceError)، بحيث يظهر الخطأ فورًا بدلًا من انتشاره بصمت.

تعني القيمة غير المُعرَّفة (undefined) أن المتغير قد تم تعريفه ولكن لم يتم إسناد قيمة له. أما القيمة الفارغة (null) فهي قيمة يتم إسنادها عمدًا لتعني "لا شيء هنا". كلتا القيمتين خاطئتان، ومع ذلك فإن الدالة typeof undefined تُرجع "غير مُعرَّف" بينما تُرجع الدالة typeof null "كائنًا".

يُستخدم عامل الجمع لربط النصوص عندما يكون أي من طرفيها سلسلة نصية، لذا فإن 22 + "3" ينتج "223". قم بالتحويل أولاً باستخدام Number() أو parseInt() عند الحاجة إلى إجراء عمليات حسابية.tracلا يوجد معنى نصي لـ tion، لذا فإن "3" − 1 تُرجع بشكل صحيح 2.

نعم. يُثبّت `const` الربط، وليس القيمة، لذا يمكن تغيير خصائص الكائن الثابت وعناصر المصفوفة الثابتة. إعادة تعيين المتغير نفسه تُسبب خطأً من نوع TypeError. استخدم `Object.freeze()` عندما يجب أن تبقى المحتويات ثابتة.

تُقدّم مساعدات الذكاء الاصطناعي المُدمجة في المحررات الحديثة كلمات مفتاحية وأسماء وصفية من السياق المحيط، وتُشير إلى المتغيرات التي يجب أن تكون ثابتة، وتُعيد تسمية كل استخدام في خطوة واحدة. تعامل مع كل اقتراح كمسودة وتأكد من صحة النطاق.

في كثير من الأحيان، نعم. مساعد طيار يقرأ الكود القريب ويقدم أسماءً مطابقة للنمط المحيط، مما يساعد على استبدال العناصر النائبة مثل x أو temp. Revراجع كل اسم، لأن الاقتراح الواضح قد يصف الشيء الخطأ.

تقوم الدالة console.log() بطباعة القيمة الحالية في وحدة تحكم المتصفح. وللاطلاع على تفاصيل أدق، ضع نقطة توقف في لوحة المصادر في أدوات المطورين، ثم مرر مؤشر الماوس فوق الاسم، أو أضفه إلى قائمة المراقبة، لقراءة القيمة عند ذلك السطر تحديدًا.

تلخيص هذه التدوينة بـ: