ويشير نطاق المتغير إلى مدى رؤية المتغير، في حين أن دورة الحياة (فترة البقاء) تدرس المتغير من منظور آخر.
ينقسم نطاق المتغيرات في JS إلى متغيرات عامة ومتغيرات محلية تسمى المتغيرات المحددة داخل الوظيفة بالمتغيرات المحلية، وتسمى تلك المحددة خارج الوظيفة بالمتغيرات العامة. ("الأشياء خارج الدالة تسمى المتغيرات العامة" هي نسبية. الفرضية التي تمت مناقشتها هنا هي أن المتغيرات المعلنة صراحةً باستخدام var. المتغيرات المعرفة بدون var داخل الدالة هي متغيرات عامة بشكل افتراضي. بالطبع، الإعلان عن المتغيرات بدون var أمر غير مقبول. ).
انسخ رمز الكود كما يلي:
var glob = 4; // قم بتعريف المتغيرات العامة خارج الوظيفة
وظيفة ممتعة () {
var height = 20; // إعلان var في الوظيفة هو متغير محلي
الوزن = 50; // تلك التي تم الإعلان عنها بدون var في الدالة هي متغيرات عامة
}
هزار()؛
تنبيه (الوزن)؛
لا يوجد نطاق على مستوى الكتلة في JS، وهو محاط بأقواس {}. هناك في جافا. اكتب الكود التالي في الطريقة الرئيسية
انسخ رمز الكود كما يلي:
public static void main(String... args) {
ل(int i=0;i<5;i++) {
}
{
كثافة العمليات ي = 10؛
}
إنت ض = 20؛
System.out.println(i); // i غير مرئي، سيتم الإبلاغ عن خطأ أثناء تحليل بناء الجملة، أي لن يمر التجميع
System.out.println(j); // j غير مرئي، وسيتم الإبلاغ عن خطأ أثناء تحليل بناء الجملة، أي أن التجميع لن يمر.
System.out.println(z); // z مرئي، الإخراج 20
}
ولكن إذا كان في JS
انسخ رمز الكود كما يلي:
ل(فار ط=0;أنا<5;i++) {
}
var obj = {name:"ليلي"};
ل(فار أتر في أوبج) {
}
{
فار ي=10;
}
تنبيه (i)؛ // الإخراج 4، لا يوجد نطاق على مستوى الكتلة
تنبيه (attr)؛ // اسم الإخراج، لا يوجد نطاق على مستوى الكتلة
تنبيه (ي)؛ // الإخراج 10، لا يوجد نطاق على مستوى الكتلة
يوضح هذا أيضًا مشكلة، تجنب استخدام حلقات for أثناء الإعلان عن المتغيرات في النطاق العام، وإلا فسيتسبب ذلك في تلويث نطاق التسمية العالمي.
بالطبع، اقترح JS1.7 الكلمة الأساسية Let للإعلان عن المتغيرات (انظر https://developer.mozilla.org/cn/New_in_JavaScript_1.7)، والتي تنطبق فقط على نطاق عبارة for.
انسخ رمز الكود كما يلي:
ل(دع أنا=0;أنا<5;i++) {
// ما يجب عمله
}
تنبيه (i)؛ // يحدث خطأ عند التشغيل، مما يشير إلى أنه لم يتم تعريف i
يجب الإشارة إلى JS1.7 على هذا النحو <script type="application/javascript;version=1.7"/></script>
ملاحظة: يطبق Firefox2+ JS1.7