هناك طريقتان لإعلان وظائف في JavaScript: تعبير الوظيفة والتعبير الوظيفي.
الاختلافات هي كما يلي:
1). بالنسبة للوظائف المحددة بالطرق المعلنة حسب الوظيفة ، يكون اسم الوظيفة ضروريًا ، في حين أن اسم وظيفة تعبير الوظيفة اختياري.
2). يمكن استدعاء الوظائف المحددة بواسطة الأساليب المعلنة حسب الوظيفة قبل إعلان الوظيفة ، في حين لا يمكن استدعاء وظائف تعبيرات الوظيفة إلا بعد الإعلان.
3). الوظائف المحددة بالطرق المعلنة حسب الوظيفة ليست إعلانات حقيقية. لا يمكن أن تظهر إلا على مستوى العالم أو متداخلة في وظائف أخرى ، لكن لا يمكن أن تظهر في الحلقات أو الظروف أو المحاولة/التقاط/أخيرًا ، و
يمكن إعلان تعبيرات الوظيفة في أي مكان.
فيما يلي طريقتان لتحديد الوظيفة:
نسخة الكود كما يلي:
// وظائف الصيغة التعريفية
وظيفة تحية () {
console.log ("Hello World") ؛
}
// تعبير الوظيفة
var metering = function () {
console.log ("Hello World") ؛
}
هنا جافا سكريبت مثيرة للاهتمام:
نسخة الكود كما يلي:
الدالة f () {console.log ('أنا خارج!') ؛ }
(وظيفة () {
إذا (خطأ) {
// كرر الوظيفة f
الدالة f () {console.log ('أنا في الداخل!') ؛ }
}
f () ؛
} ()) ؛
ماذا سيخرج؟ يجب أن يكون رد الفعل الأول "أنا خارج". نتيجة لذلك ، "أنا الداخل" هو الإخراج في Chrome ، IE11 أبلغت مباشرة عن خطأ ، والإصدار السفلي من مخرجات Firefox "أنا في الخارج" ...
تعكس نتيجة إخراج الكروم بوضوح خصائص الوظائف المعلنة مع تعبيرات التصريح الوظيفية - يمكن استدعاء الوظائف قبل الإعلان.
يوضح خطأ IE أن الكائن مفقود لأن إعلان الوظيفة في الحالة ، التي تنتهك مبدأ إعلان الوظيفة.
نطاق تعبيرات الوظيفة:
إذا كانت الوظيفة المعلنة بتعبير الوظيفة لها اسم دالة ، فإن اسم الوظيفة يعادل متغيرًا محليًا للوظيفة ولا يمكن استدعاؤه إلا داخل الوظيفة. على سبيل المثال ، الكستناء:
نسخة الكود كما يلي:
var f = function fact (x) {
إذا (x <= 1)
العودة 1 ؛
آخر
return x*fact (x-1) ؛
} ؛
التنبيه (fact ()) ؛ // unitical referenererror: حقيقة غير محددة
يمكن استدعاء FAST () داخل الوظيفة ، ولكن سيتم الإبلاغ عن خطأ عند استدعاء الوظيفة: لا يتم تعريف الحقيقة
ما سبق هو كل شيء عن هذا المقال ، أتمنى أن تنال إعجابك.