بالمقارنة مع C/C ++ ، لا يمكن لـ For Loop في ECMASCRIPT إنشاء سياق محلي.
نسخة الكود كما يلي:
لـ (var k في {a: 1 ، b: 2}) {
تنبيه (ك) ؛
}
تنبيه (ك) ؛ // على الرغم من انتهاء الحلقة ، فإن المتغير K لا يزال في النطاق الحالي
في أي وقت ، لا يمكن الإعلان عن المتغيرات إلا باستخدام الكلمة الرئيسية VAR.
بيان المهمة أعلاه:
أ = 10 ؛
هذا ببساطة إنشاء خاصية جديدة للكائن العالمي (لكنه ليس متغيرًا). "ليس متغيرًا" لا يعني أنه لا يمكن تغييره ، ولكن يعني أنه لا يتوافق مع المفهوم المتغير في مواصفات ECMAScript ، لذلك فهو "ليس متغيرًا" (السبب في أنه يمكن أن يصبح خاصية لكائن عالمي تمامًا لأن هناك كائنًا عالميًا في جافاريبت. مثل هذه العملية لا تعلن متغيرًا سوى إضافة خاصية إلى كائن عالمي.
دعونا نرى مثالًا بسيطًا لتوضيح المشكلة
نسخة الكود كما يلي:
if (! ("A" في النافذة)) {
var a = 1 ؛
}
تنبيه (أ) ؛
بادئ ذي بدء ، جميع المتغيرات العالمية هي خصائص النافذة ، والبيان var a = 1 ؛ يعادل window.a = 1 ؛
يمكنك استخدام الطريقة التالية لاكتشاف ما إذا كان يتم الإعلان عن المتغير العالمي
"الاسم المتغير" في النافذة
ثانياً ، جميع الإعلانات المتغيرة في أعلى نطاق النطاق ، انظر إلى مثال مماثل:
نسخة الكود كما يلي:
تنبيه ("أ" في النافذة) ؛
var a ؛
في هذا الوقت ، على الرغم من أن الإعلان هو بعد التنبيه ، إلا أن التنبيه ينبثق لا يزال صحيحًا ، لأن محرك JavaScript سيقوم أولاً بتجتاح جميع الإعلانات المتغيرة ، ثم نقل هذه التصريحات المتغيرة إلى الأعلى. تأثير الكود النهائي هو كما يلي:
نسخة الكود كما يلي:
var a ؛
تنبيه ("أ" في النافذة) ؛
ثالثًا ، تحتاج إلى فهم معنى السؤال هو أن الإعلان المتغير متقدم ، لكن المهمة المتغيرة لا ، لأن هذا السطر من الكود يتضمن الإعلان المتغير والتعيين المتغير.
يمكنك تقسيم البيان إلى الكود التالي:
نسخة الكود كما يلي:
var a ؛ // إفادة
أ = 1 ؛ // تهيئة المهمة
لتلخيص ، عند استخدام إعلان متغير وتخصيص معاً ، سيقوم محرك JavaScript بتقييمه تلقائيًا إلى جزأين لتعزيز الإعلان المتغير. خطوة المهمة ليست متقدمة لأنها قد تؤثر على تنفيذ الكود وتحقيق نتائج غير متوقعة.
الرمز في السؤال يعادل:
نسخة الكود كما يلي:
var a ؛
if (! ("A" في النافذة)) {
أ = 1 ؛
}
تنبيه (أ) ؛
وفقًا لتحليل المثال أعلاه ، إذا تم الإعلان عن المتغير ، فيجب عليك إضافة VAR قبل المتغير المحلي المعلن. إذا كان المتغير العالمي المعلن ، لا يمكنك إضافة VAR (من الأفضل الحد من عدد المتغيرات العالمية ومحاولة استخدام المتغيرات المحلية)
يصف ما يلي عدة ميزات لاستخدام var
إن استخدام عبارة VAR لإعلان متغير عدة مرات ليس قانونيًا فحسب ، بل أيضًا لا يسبب أي أخطاء.
إذا كان إعلان إعادة استخدامه له قيمة أولية ، فإنه يعمل فقط كبيان تعيين.
إذا لم يكن للإعلان إعادة استخدام قيمة أولية ، فلن يكون له أي تأثير على المتغير الأصلي.
توجد متغيرات بدون إعلانات VAR كمتغيرات عالمية ؛ تنتمي المتغيرات مع إعلانات VAR إلى المتغيرات المحلية ، وخاصة الوظائف الداخلية. وبعد الاختبار ، من الأسرع إعلان مع VAR من عدم وجود VAR. قم بتعيين أكبر عدد ممكن من المتغيرات المحلية في الوظيفة ، وهي آمنة وسريعة ، والعمليات المتغيرة أكثر عقلانية ، ولن تكون هناك أخطاء منطقية ناتجة عن التشغيل العشوائي للمتغيرات العالمية في الوظيفة.
من الأفضل استخدام طريقة الكائن وجهًا لوجه عند إعلان كائن ما ، لأن هذه السرعة أسرع بكثير من الطريقة الجديدة.
الاسم المتغير يؤخذ بنفسك. من أجل رعاية الدلالات والمواصفات ، قد يكون الاسم المتغير أطول قليلاً ، ولكن كن حذرًا ، سيؤثر طول الاسم المتغير أيضًا على سرعة تنفيذ الكود. إعلانات الاسم المتغيرة الطويلة ليست بالسرعة القصوى.