جافا سكريبت الإغلاق
يمكن المتغيرات جافا سكريبت تكون المتغيرات المحلية أو العالمية.
المتغيرات خاصة يمكن استخدامها الإغلاق.
المتغيرات العالمية
وظيفة يمكن الوصول إلى المتغيرات التي يحددها الوظائف الداخلية، مثل ؟:
كما يمكن الوصول إليها وظيفة خارج وظيفة محددة المتغيرات، مثل:
مثال على ظهره، وهو غير متغير عمومي.
في صفحة ويب تنتمي إلى إطار الكائن المتغير العالمي.
المتغيرات العالمية ويمكن استخدامها في جميع البرامج النصية على الصفحة.
في المقام الأول، وهو غير متغير محلي.
لا يمكن إلا أن المتغيرات المحلية أن تستخدم لتحديد وظيفة الداخلية. أجل وظيفة أخرى أو كود غير متوفر.
حتى المتغيرات العالمية والمحلية التي تحمل الاسم نفسه، بل هي أيضا اثنين من المتغيرات المختلفة. تعديل واحد، فإنه لن يؤثر على قيمة أخرى.
إذا كنت لا بتعريف متغير باستخدام الكلمة فار، ثم هو المتغير العالمي، على الرغم من أن يتم تعريفه ضمن الدالة. |
دورة الحياة المتغيرة
نطاق المتغيرات العالمية والعالمي، وهذا هو، في جميع أنحاء برنامج جافا سكريبت، والمتغيرات العالمية في كل مكان.
في متغير أعلن في الداخل وظيفة، والعمل فقط داخل الدالة. هذه المتغيرات المحلية والمحلية في النطاق؛ المترجمة المعلمة وظيفة، فقط داخل العمل وظيفة.
مكافحة معضلة
إذا كنت تريد أن تصور في بعض الإحصاءات العددية، وهي العدادات المتوفرة في كل من وظائف.
يمكنك استخدام المتغيرات العالمية، وتحدد وظيفة يزداد العداد:
أمثلة
إضافة وظيفة () {
عداد + = 1؛
}
إضافة ()؛
إضافة ()؛
إضافة ()؛
// عداد الآن 3
محاولة »
حدث تغيير قيمة العداد في تنفيذ وظيفة الاعلان ().
ولكن السؤال هو، أي برنامج نصي على الصفحة يمكن تغيير العداد، حتى لو لم يكن هناك دعوة لإضافة وظيفة ().
إذا أعلن وظيفة ضمن وصفة طبية، إن لم يكن استدعاء الدالة لن تعديل قيمة العداد:
أمثلة
فار مكافحة = 0؛
عداد + = 1؛
}
إضافة ()؛
إضافة ()؛
إضافة ()؛
// القصد من ذلك هو لإخراج 3، ولكنه لم يكن كذلك، والناتج هو 1!
محاولة »
سوف رمز أعلاه لا يخرج بشكل صحيح، في كل مرة أدعو لإضافة وظيفة ()، سيتم تعيين العداد إلى 1.
جافا سكريبت دالة مضمنة يمكن أن تحل هذه المشكلة.
وظائف متداخلة جافا سكريبت
ويمكن لجميع وظائف الوصول إلى المتغيرات العالمية.
في الواقع، في تفعيل جافا، يمكن لجميع وظائف الوصول إليها في الطابق النطاق.
جافا سكريبت تدعم وظائف متداخلة. وظيفة المتداخلة يمكن الوصول إلى المتغيرات على طبقة وظيفة.
في هذا المثال، الدالة المتداخلة الجمع () يمكن الوصول إلى مكافحة متغير وظيفة الوالد:
أمثلة
فار مكافحة = 0؛
وظيفة الجمع () {عداد + = 1؛}
PLUS ()؛
العودة مضادة.
}
محاولة »
اذا كنا نستطيع الحصول على وظيفة بالإضافة إلى خارج ()، حتى نتمكن من معالجة محنة العداد.
ونحن بحاجة أيضا إلى التأكد من أن مكافحة = 0 مرة واحدة فقط.
نحن بحاجة الإغلاق.
جافا سكريبت الإغلاق
حفظ المكالمات وظيفة نفسها تفعل؟ وهذه وظيفة تفعل؟
أمثلة
فار مكافحة = 0؛
عودة وظيفة () {عودة عداد + = 1؛}
}) ()؛
إضافة ()؛
إضافة ()؛
إضافة ()؛
3 // مكافحة
محاولة »
أمثلة تحليلية
إضافة كلمة متغير يدل على قيمة العائد من وظيفة تطلق على نفسها.
يتم تنفيذ وظيفة الدعوة النفس مرة واحدة فقط. وضع العداد إلى الصفر. والعودة إلى التعبير وظيفة.
إضافة متغير كدالة للاستخدام. وجزء كبير هو أنه يمكن الوصول إليها على نطاق وصفة طبية وظيفة طبقة.
وهذا ما يسمى إغلاق جافا سكريبت. أنه يحتوي على المتغير الخاص بحيث تصبح وظيفة ممكنة.
مكافحة بأن نطاق الحماية من وظيفة غير معروفة لا يمكن تعديلها من قبل طريقة الإضافة.
إغلاق يمكن الوصول إليها على وظيفة واحدة نطاق متغير داخل وظيفة، حتى لو تم إغلاق وظيفة طبقة. |