1. كل وظيفة JavaScript هي مثيل لكائن دالة. يحتوي على خاصية داخلية [[نطاق]] لا يمكن الوصول إليها إلا لمحرك JavaScript. يخزن هذا [[Scope]] مجموعة من النطاق ، والتي تسمى "سلسلة النطاق" ، ومخازن التجميع "كائن قابل للتغيير" VO أو "كائن نشط" AO (AO لديه المزيد من هذه الخصائص والوسائط أكثر من VO).
2. عند إنشاء وظيفة ، ستتم إضافة جميع الكائنات القابلة للتغيير في سلسلة النطاق من نطاقها الأم إلى [[النطاق]] (إذا كان نطاق الوالدين عالميًا ، فسيتم إضافة كائن عالمي واحد فقط إلى سلسلة نطاق الوظيفة الحالية).
3. عند تنفيذ وظيفة ، سيتم دفع بيئة تنفيذ الوظيفة إلى كومة بيئة:
1. في هذا الوقت ، تدخل مرحلة التهيئة المتغيرة للوظيفة. تحدد هذه المرحلة الوظيفة الداخلية: هذه القيمة ، معلمات الوظائف ، إعلانات الوظائف ، الإعلانات المتغيرة ، والوسائط. استنادًا إلى هذه القيم ، سيتم تكوين الكائن النشط AO للوظيفة الحالية ، وسيتم حفظ كائن AO إلى الموضع الأول لسلسلة نطاق الوظيفة الحالية.
ملاحظة: تم ملء AO بالترتيب التالي:
1. معلمات الوظائف (إذا تم تمرير معلمة ، فسيتم تعيينها. إذا لم يتم تمرير المعلمة ، فإن قيمة التهيئة غير محددة)
2. إعلان الوظيفة (في حالة حدوث تعارض اسم الحياة ، سيتم تجاوزه) والأولوية القصوى
3. إعلان متغير (قيمة متغير التهيئة غير محددة ، في حالة حدوث تعارض اسم الحياة ، سيتم تجاهله) الأولوية الثالثة
2. ثم هي مرحلة التنفيذ للوظيفة. سيتم البحث في جميع المتغيرات وإعلانات الوظائف المستخدمة في الوظيفة الحالية من سلسلة نطاق [[النطاق]] للوظيفة الحالية. وفقًا لموقع الكائن الموجود في سلسلة النطاق ، سيتم تفتيش كائن AO للوظيفة الحالية أولاً. إذا لم يكن هناك كائن علوي ، فسيتم العثور على الكائن العالمي. إذا لم يكن هناك ، فسيتم الإبلاغ عن خطأ (لم يتم تعريف المتغير).
عملية تنفيذ دالة JavaScript أعلاه هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.