يتم استخدام وظيفة الكلمة الرئيسية لتحديد وظيفة.
نسخة الكود كما يلي:
// تعريف الوظيفة التعريفي:
وظيفة funcname ([arg1 [، args [... ، argn]]]) {
البيانات
}
// تعريف التعبير عن الوظيفة:
var funcname = function ([arg1 [، args [... ، argn]]]) {
البيانات
} ؛
لاحظ أن الأقواس المجعد في عبارات الوظيفة مطلوبة ، حتى لو كان جسم الوظيفة يحتوي على بيان واحد فقط.
في JavaScript ، الوظائف هي مثيلات محددة من فئة الوظائف. ولديهم جميعًا خصائص وطرق مثل الأنواع المرجعية الأخرى.
اسم الوظيفة هو في الواقع مؤشر إلى كائن الوظيفة ، ويمكن استخدام الوظيفة كمعلمة للمشاركة في نقل المعلمة وقيمة الإرجاع.
خصائص كائن الوظائف
لأن الوظيفة هي مثيل للدالة ، فإن اسم الوظيفة هو مجرد عنوان مرجعي لتلك المثيل. لذلك ، يمكن استخدامه كمعلمات وقيم الإرجاع في عملية نقل المعلمة للدالة.
نسخة الكود كما يلي:
الدالة call_some_function (some_function ، some_argument) {
إرجاع some_function (some_argument) ؛
}
وظيفة add_10 (num) {
إرجاع num + 10 ؛
}
console.log (call_some_function (add_10،20)) ؛ // 30
الخصائص الداخلية للوظيفة
الحجج | هذا
• يحتفظ كائن الوسائط بتمرير المعلمات إلى الوظيفة
• الوسيطات. إرجاع الطول عدد المعلمات الواردة
• ملاحظة: تمثل سمة الطول عدد المعلمات المستلمة افتراضيًا عند تعريف الوظيفة. يمثل الطول. الطول عدد المعلمات المستلمة عند تنفيذ الوظيفة بالفعل.
نسخة الكود كما يلي:
وظيفة test_arguments () {
if (الحجج. length == 2) {
console.log (encuments.length) ؛
console.log (الحجج) ؛
} آخر {
console.log (encuments.length) ؛
console.log (الحجج) ؛
الحجج. callee (4 ، 5) ؛
} ؛
} (1 ، 2 ، 3)
/**
3
{'0': 1 ، '1': 2 ، '2': 3}
2
{'0': 4 ، '1': 5}
**/
• الوسائط. callee () يستخدم بشكل أساسي في الموقف الذي تسمى الوظيفة نفسها في الوظائف العودية. الفرق بين JS واللغات الأخرى هو أن اسم الوظيفة هو مجرد مؤشر ويمكن تغييره في أي وقت. اسم الوظيفة في الوظيفة مقترنة للغاية ، مما قد يسبب مشاكل ، والدعوة إلى الحجج. callee () نفسها سوف تتجنب هذه المشكلة.
نسخة الكود كما يلي:
وظيفة Factorial (num) {
if (num <= 1) {
العودة 1 ؛
} آخر {
إرجاع num * factorial (num - 1) ؛
} ؛
}
وظيفة callee_f (num) {
if (num <= 1) {
العودة 1 ؛
} آخر {
إرجاع num * ediuments.callee (num - 1) ؛
} ؛
}
العامل (10) ؛ // تعمل بشكل طبيعي
f = factorial ؛
العامل = فارغ ؛
F (10) ؛ //خطأ
callee_f (10) ؛ // تعمل بشكل طبيعي
f = callee_f ؛
callee_f = null ؛
F (10) ؛ // تعمل بشكل طبيعي
• يستخدم هذا بشكل أساسي للمساعدة في الإشارة إلى الكائنات في نطاق الوظيفة.
نسخة الكود كما يلي:
var color = 'Red' ؛
وظيفة syacolor () {
console.log (this.color) ؛
}
syacolor () ؛ //أحمر
var o = new Object () ؛
O.Color = 'Blue' ؛
O.Saycolor = saycolor ؛
O.Saycolor () ؛ //أزرق
Call () وتطبيق ()
Call () والتطبيق () هي الطرق الخاصة التي تحتوي عليها كل وظيفة. لقد تم ذكره من قبل أن الوظائف هي كائنات محددة ، لذلك عند استدعاء وظائف ، فإن هذا في الوظيفة هو دعوة للمتغيرات الحالية والمنخفضة. إذا كنت ترغب في تغيير مساحة المجال حيث يتم تنفيذ الوظيفة ، فيمكنك استخدام Call () وتطبيق () لتنفيذها.
نسخة الكود كما يلي:
اللون = "أحمر" ؛
var o = {color: 'Blue'} ؛
وظيفة sexercolor () {
console.log (this.color) ؛
}
saycolor () ؛ //أحمر
saycolor.call (هذا) ؛ //أحمر
saycolor.call (o) ؛ //أزرق
وظائف APP () و Call () هي نفسها ، والفرق هو الفرق بشكل أساسي في المعلمات الواردة.
Call (هذا ، Para1 ، Prar2 ، Prar3) المعلمة الأولى هي نطاق الوظيفة المراد تنفيذه. المعلمة اللاحقة هي معلمة الإدخال للوظيفة ، وهناك مرات عديدة مكتوبة بالتسلسل.
تطبيق (هذا ، [para1 ، para2 ، prara3]) المعلمة الأولى هي أيضًا نطاق الوظيفة المراد تنفيذه ، تليها كائن صفيف.
أكبر فائدة لاستخدام Call ()/تطبيق () لتوسيع نطاق هو فصل الكائنات والأساليب.
كائنات مدمجة
يمكن فهم الكائنات العالمية على أنها الكائن الخارجي ، وجميع الكائنات ، وكذلك السمات والأساليب التي لا تنتمي إلى كائنات أخرى يتم تضمينها في الكائن العالمي.
* يتم استخدام Isnan (x) للتحقق مما إذا كانت المعلمة x عبارة عن رقم. إذا تم إرجاع FALSE لرقم ، فأرد صحيحًا خلاف ذلك
* يتم استخدام isfinite (x) للتحقق مما إذا كانت المعلمة x غير محدودة/صغيرة. إذا كان لا حصر له/صغير ، فإنه يعود صحيح.
* يتم استخدام Parseint (x) لتحليل السلاسل وإعادة الأعداد الصحيحة
* يتم استخدام parsefloat (x) لتحليل السلاسل وإرجاع أرقام النقاط العائمة
* Encodeuri () و EncodeUricomponent () سيقومون بتشفير UTF-8 خاص على السلسلة ، وتجنب بعض الأحرف الخاصة لفهم المتصفح. الفرق الرئيسي بينهما هو أن Encodeuri () لا يشفر أحرف خاصة تنتمي إلى URI ، في حين أن EncodeUricomponent () يشفر جميع الأحرف غير القياسية التي يجدها.
نسخة الكود كما يلي:
var uri = "http://www.wrox.com/ilegal value.htm#start" ؛
//http://www.wrox.com/ilegal٪20value.htm#start
console.log (Encodeuri (URI))
//http٪3a٪2f٪2fwww.wrox.com٪2FileGal٪20Value.htm٪23Start
console.log (EncodeUricomponent (URI))
• وظائف فك التشفير المقابلة هي decodeuri () و decodeuricomponent ()
• يتم استخدام Eval (Script) لتنفيذ محتوى البرنامج النصي في المترجم المترجم وإرجاع النتيجة المقابلة. قوي جدا!
ملاحظة: في المتصفح ، تغلف كائنات Windows الكائنات العالمية وتنفيذ الكثير من المهام والوظائف الإضافية.
كائن الرياضيات هو كائن آخر مدمج. يوفر وظائف الحساب الرياضية لجافا سكريبت.
ما سبق هو كل شيء عن هذا المقال. أتمنى أن تعجبك وستكون مفيدة لك.