جميع تلك المحددة خارج الوظيفة هي المتغيرات العالمية ، وتلك المحددة داخل الوظيفة هي المتغيرات المحلية. يشير التعريف هنا إلى إعلان VAR.
لدى JavaScript مفهوم عالمي ضمني ، مما يعني أن أي متغير لا تعلن سيعلنه سيصبح خاصية كائن عالمي. على سبيل المثال:
نسخة الكود كما يلي:
اختبار الوظيفة () {
myName = "huming" ؛
تنبيه (myName) ؛
}
امتحان()؛ // "هينغ"
تنبيه (myName) ؛ // "هينغ"
النتيجة هي نفسها ، مما يشير إلى أن اسم myName هو متغير عالمي.
لذلك ، هل هناك فرق بين المتغيرات العالمية الضمنية والمتغيرات العالمية المحددة جيدًا؟ . يجب أن يكون هناك إجابة ، انظر المثال التالي:
نسخة الكود كما يلي:
// تحديد ثلاثة متغيرات عالمية
var global_test1 = 1 ؛
global_test2 = 2 ؛ // كتاب مدرسي سلبي
(وظيفة () {
global_test3 = 3 ؛ // كتاب مدرسي سلبي
} ()) ؛
// محاولة حذف
حذف Global_Test1 ؛ // خطأ شنيع
حذف Global_Test2 ؛ // حقيقي
حذف Global_Test3 ؛ // حقيقي
// اختبر الحذف
تنبيه (typeof global_test1) ؛ // "رقم"
تنبيه (typeof global_test2) ؛ // "غير محدد"
تنبيه (typeof global_test3) ؛ // "غير محدد"
من المثال أعلاه ، يمكننا أن نرى أنه لا يمكن حذف Global_Test1 المحددة بواسطة VAR خارج الوظيفة ، في حين يتم حذف Global_Test2 و Global_Test3 بواسطة VAR (سواء تم إنشاؤه في جسم الوظيفة أم لا).
باختصار ، لا يمكن حذف المتغيرات العالمية المعلنة بواسطة VAR خارج الوظيفة ، في حين يمكن حذف المتغيرات العالمية الضمنية.
ملاحظة هنا: لدى JavaScript سلوك يسمى "رفع" (تعليق/توقف عن التحليل/الاستعداد).
دعونا نستخدم مثالًا لتوضيح:
نسخة الكود كما يلي:
var myname = "huming" ؛ // إعلان المتغيرات العالمية
اختبار الوظيفة () {
تنبيه (myName) ؛
var myname = "local_huming" ؛
تنبيه (myName) ؛
}
امتحان()؛
هل تخمن أن محتوى التنبيه ثابت مرتين؟ ؟ من الواضح أنه غير متناسق ، هل من الضروري القول هذا الاتساق؟ . الإخراج الفعلي هو: "غير محدد" ، "local_huming".
المثال أعلاه يعادل
نسخة الكود كما يلي:
var myname = "huming" ؛ // إعلان المتغيرات العالمية
اختبار الوظيفة () {
var myname ؛
تنبيه (maname) ؛ <br> myName = "local_huming" ؛
تنبيه (myName) ؛ // "محلي"
}
امتحان()؛
أول تنبيه مخرج myName ليس هو المتغير العالمي الذي تعتقده ، ولكن المتغير المحلي ضمن نطاق (جسم وظيفة). على الرغم من أنه لم يتم الإعلان عنه ، فقد تم اعتباره إعلانًا. هذا ما يسمى "الرفع".
يجب فهم هذا. إذا كنت تستخدم متغيرًا في جسم الوظيفة و Redeclare لاحقًا ، فقد يحدث خطأ.
مواصفات الكتابة:
نسخة الكود كما يلي:
اختبار الوظيفة () {
var a = 1 ،
ب = 2 ،
C = A + B ،
d = {} ،
ه ،
و ؛
// وظيفة الجسم ...
}
الفوائد هي:
1. يتم تعريف جميع المتغيرات المحلية في بداية الوظيفة ، والتي تكون مريحة للبحث ؛
2. منع استخدام الأخطاء المنطقية قبل تعريف المتغير.
هل فهمت إعلان جافا سكريبت المتغير؟ المحتوى أعلاه مفصل للغاية وسهل الفهم. الملخص النهائي هو أيضا وثيق الصلة جدا. لا تفوتها.