الوظيفة هي كتلة قابلة لإعادة الاستخدام من التعليمات البرمجية التي يقودها حدث أو تنفيذها عند استدعاءها.
يدعم JScript وظيفتين: إحداهما وظيفة داخل اللغة (مثل eval ()) ، والآخر يتم إنشاؤه بمفرده.
المتغير الذي تم إعلانه داخل وظيفة JavaScript (باستخدام VAR) هو متغير محلي ، لذلك لا يمكن الوصول إليه إلا داخل الوظيفة. (نطاق هذا المتغير محلي).
يمكنك استخدام المتغيرات المحلية مع نفس الاسم في وظائف مختلفة ، لأن الوظائف فقط التي أعلنت أن المتغير يمكن التعرف عليه.
كيفية استدعاء وظيفة
1. المكالمة العادية: وظيفة (المعلمة الفعلية ...)
2. استدعاء المتغيرات التي تشير إلى الوظيفة:
var myvar = اسم وظيفة ؛
myvar (المعلمات الفعلية ...) ؛
إرجاع الوظيفة
1. عندما لا يكون للوظيفة قيمة إرجاع صريحة ، تكون القيمة التي تم إرجاعها "غير محددة".
2. عندما يكون للوظيفة قيمة إرجاع ، فإنها تُرجع مهما كانت قيمة الإرجاع.
يمكننا إرجاع الوظيفة إلى المكان الذي يتم استدعاؤه باستخدام عبارة الإرجاع.
عند استخدام عبارة الإرجاع ، تتوقف الدالة من التنفيذ وإرجاع القيمة المحددة.
عادة ما تُرجع الوظيفة قيمة فريدة ، لذلك قد تكون هذه القيمة أيضًا وظيفة أخرى:
نسخة الكود كما يلي:
<script type = "text/javaScript">
var box = function () {
var a = 1 ؛
وظيفة الإرجاع () {
تنبيه (A ++)
}
}
ALERT (box ()) ؛ // "function () {Alert (a ++)}" pops up
</script>
هنا نقوم فقط بتعيين قيمة الإرجاع إلى متغير ، ثم يمكننا تسميتها مثل استخدام وظيفة عادية:
نسخة الكود كما يلي:
<script type = "text/javaScript">
var box = function () {
var a = 1 ؛
وظيفة الإرجاع () {
تنبيه (++ أ)
}
}
var newfunc = box () ؛
Newfunc () ؛ // 2
</script>
إذا كنت تريد تنفيذ الوظيفة التي تم إرجاعها على الفور ، فيمكنك أيضًا استخدام المربع () () لتنفيذ هذا الرمز.
يتم تمرير جميع وظائف ECMASCRIPT بواسطة القيم ، مما يعني أنه لن يتم تمرير المعلمات بالرجوع إليها.
ملاحظة: إذا كان هناك مرجع مرار ، فسيكون المتغير في الوظيفة متغيرًا عالميًا ويمكن أيضًا الوصول إليه خارجيًا.
(1) أنواع القيمة: العددية ، منطقية ، لاغية ، غير محددة.
(2) نوع المرجع: كائن ، صفيف ، وظيفة.
قيمة النوع المرجعي: تشير إلى تلك الكائنات المخزنة في ذاكرة الكومة ، مما يعني أن المتغير هو في الواقع مجرد مؤشر ، والذي ينفذ موقعًا آخر في الذاكرة ، ويتم حفظ الكائن حسب هذا الموقع ؛
إنشاء وظائف مجهولة
نسخة الكود كما يلي:
وظيفة(){
العودة "لي" ؛ // لا يمكن تشغيل وظائف مجهولة المصدر ، وحتى إذا كان يمكن تشغيلها ، لا يمكن استدعاؤها لأنه لا يوجد اسم
}
هناك العديد من استخدامات هذه الوظيفة المجهولة في jQuery. إعلان وظيفة مجهولة مباشرة واستخدمها على الفور. ميزة استخدام وظائف مجهولة هي أنه يمكنهم تجنب تحديد وظيفة لا تستخدم مرة واحدة ، وهي خالية من مشكلة تعارضات تسمية. لا يوجد مفهوم مساحة الاسم في JS ، لذلك من السهل أن يكون هناك تعارضات في اسم الوظيفة. بمجرد إجراء الصراع التسمية ، يسود آخر مرة واحدة.
تنفيذ وظائف مجهولة عن طريق التنفيذ الذاتي:
نسخة الكود كما يلي:
// تنفيذ وظائف مجهولة من خلال التنفيذ الذاتي
<script type = "text/javaScript">
(function () {// (وظيفة مجهولة) () ؛ ضع وظيفة مجهولة في الأقواس الأولى ، وتنفيذها في الأقواس الثانية.
تنبيه ('لي') ؛
}) () ؛
</script>
تعيين قيمة الإرجاع للدالة المجهولة للمتغير:
نسخة الكود كما يلي:
// تعيين قيمة الإرجاع للدالة المجهولة المصدر ذاتيا للمتغير
<script type = "text/javaScript">
var box = (function () {
تنبيه ('لي') ؛
}) () ؛ // popt "Lee" ؛
تنبيه (مربع) ؛ // الملوثات العضوية الثابتة غير المحددة. إذا تم كتابة ALERT (BOX ()) ، فإن "Lee" يظهر فقط
</script>
تمرير المعلمات لوظائف التنفيذ الذاتي مجهول:
نسخة الكود كما يلي:
// تنفيذ ذاتي نقل المعلمة للوظائف المجهولة
<script type = "text/javaScript">
(وظيفة (العمر) {
تنبيه (العمر) ؛
}) (100) ؛ // popt 100
</script>
JavaScript يخلق وظائف ديناميكية:
يدعم JavaScript إنشاء وظائف ديناميكية. يجب تحديد الوظائف الديناميكية بواسطة كائنات الوظيفة (الوظيفة هي كائن في JavaScript ، وهو ثابت وغير متغير. ينص على أن "F" لكائن الوظيفة يجب أن يكون قد يتم رسملة
التنسيق الأساسي لإنشاء وظائف ديناميكية: var variable name = new function ("parameter 1" ، "parameter 2" ، "parameter n" ، "execution execution") ؛
انظر إلى الكود التالي:
نسخة الكود كما يلي:
<script type = "text/javaScript">
var square = وظيفة جديدة ("x" ، "y" ، "var sum ؛ sum = x+y ؛ sum ؛") ؛
نتيجة التنبيه ("Square (2،3) هي:"+Square (2،3)) ؛ // نتيجة المربع (2،3) هي: 5
</script>
المربع وظيفة تم إنشاؤها ديناميكيا. يجب أن يكون كل جزء من المحتوى في الأقواس بعد كائن الوظيفة في شكل سلسلة ، أي أنه يجب أن يكون محاطًا في علامات اقتباس ("" أو "")
هذا الرمز:
var square = وظيفة جديدة ("x" ، "y" ، "var sum ؛ sum = x+y ؛ sum ؛") ؛
والرمز التالي:
نسخة الكود كما يلي:
وظيفة Square (x ، y) {
فار.
مجموع = x+y ؛
إرجاع مجموع
}
إنه نفس الشيء تمامًا ، باستثناء أن واحدة هي وظيفة ديناميكية والآخر وظيفة ثابتة.
لماذا نقسم الكود إلى قطع صغيرة من التعليمات البرمجية؟ تتمثل ميزة تقسيم السلسلة إلى عدة سلاسل مستقلة في أنه يمكننا تغيير وظيفة الوظيفة في أي وقت عن طريق تعديل بعض الأوتار.
وظيفة رد الاتصال
رد الاتصال هو عملية استدعاء الوظيفة. ثم ابدأ بفهم عملية الاتصال هذه. الوظيفة A لها معلمة ، وهي دالة ب. عند تنفيذ الوظيفة A ، يتم تنفيذ الوظيفة B. ثم تسمى هذه العملية رد الاتصال.
في الواقع ، من السهل فهم اللغة الصينية أيضًا: عمليات الاسترجاعات ، والاسترداد ، وتعني المكالمات الخلفية. بعد الانتهاء من الوظيفة A ، وظيفة الاتصال B لاحقًا.
يجب أن يكون واضحًا هنا: يتم تمرير الوظيفة B إلى الوظيفة A في شكل معلمة ، لذلك تسمى الوظيفة B وظيفة رد الاتصال.
معظم وظائف التأثير في jQuery تتضمن وظائف رد الاتصال. وظيفة تأثير jQuery
على سبيل المثال:
نسخة الكود كما يلي:
<script type = "text/javaScript">
$ ("div"). show (1000 ، function () {
// وظيفة رد الاتصال
}) ؛
</script>
هنا ، يمكن استبدال وظيفة رد الاتصال بمثيل:
نسخة الكود كما يلي:
<script type = "text/javaScript">
$ ("div"). show (1000 ، function () {
console.log ("Hello World")
}) ؛
</script>
إن رد الاتصال هو في الواقع ، عند تنفيذ وظيفة ، فإن الوظيفة التي يتم تنفيذها الآن هي ما يسمى بوظيفة رد الاتصال. ماذا عن ذلك؟ من السهل فهم ...
الفرق بين الأساليب والوظائف
نسخة الكود كما يلي:
var arr = [1،2،3،4،5]
var a = 12 ؛ // متغير: مجاني
arr.a = 5 ؛ // السمة: ينتمي إلى كائن
وظيفة العرض () // الوظيفة: مجاني
{
تنبيه ('a') ؛
}
arr.fn = function () // الطريقة: ينتمي إلى كائن
{
تنبيه ('b') ؛
}
في الواقع ، الطريقة هي وظيفة ، ولكن الطريقة لها كائن ينتمي إليه.
كما نعلم ، وظائف الربط للنقر على الأحداث
القواعد:
$ (محدد). انقر (وظيفة)
وصف المعلمة
الوظيفة اختيارية. يحدد الوظيفة التي يتم تشغيلها عند حدوث حدث النقر.
غالبًا ما ينظر إلى هذا النموذج في jQuery. يستخدم وظيفة كمعلمة لإضافة معالج حدث إلى الطريقة.
وظيفة JS العالمية
الوظائف العالمية ليست مفهومًا مع خصائص أو طرق للكائنات المدمجة. الوظيفة العالمية لا تنتمي إلى أي كائن مدمج.
يحتوي JavaScript على الوظائف العالمية السبعة التالية لإكمال بعض الوظائف الشائعة الاستخدام:
Escape () ، eval () ، isfinite () ، isnan () ، parsefloat () ،
Parseint () ، unescape ().
عدة وظائف للوظائف
استخدم كمنشئ فئة
نسخة الكود كما يلي:
فئة الوظائف () {}
class.prototype = {} ؛
var item = new class () ؛
تستخدم كإغلاق
نسخة الكود كما يلي:
(وظيفة(){
// نطاق مستقل
}) () ؛
ودعا كمؤسسة
ما يسمى المُنشئ هو إنشاء كائن جديد من خلال هذه الوظيفة.
نسخة الكود كما يلي:
<script type = "text/javaScript">
اختبار الوظيفة () {
this.x = 10 ؛
}
var obj = new test () ؛
تنبيه (obj.x) ؛ // pop 10 ؛
</script>
يمكن استخدام المشغل الجديد لدمج المنشآت المحددة مسبقًا مثل Object () و Date () و Function () لإنشاء وتهيئة الكائنات. تعد البرمجة الموجهة للكائنات ميزة قوية لقدرتها على تحديد مخصصات مخصصة لإنشاء كائنات مخصصة تستخدم في البرامج النصية. يتم إنشاء مُنشئ مخصص بحيث يمكن إنشاء كائنات ذات خصائص محددة. فيما يلي مثال على وظيفة مخصصة (لاحظ استخدام هذه الكلمة الرئيسية).
نسخة الكود كما يلي:
دائرة الدالة (xpoint ، ypoint ، نصف قطرها) {
this.x = xpoint ؛ // x إحداثيات مركز الدائرة.
this.y = ypoint ؛ // إحداثيات Y من مركز الدائرة.
this.r = دائرة نصف قطرها ؛ // نصف قطر الدائرة.
}
عند استدعاء مُنشئ الدائرة ، يتم إعطاء قيمة نقطة الوسط ونصف قطر الدائرة (كل هذه العناصر مطلوبة لتحديد كائن دائري فريد تمامًا). في النهاية ، يحتوي كائن الدائرة على ثلاث خصائص. إليك كيفية توضيح كائن دائرة.
var acircle = دائرة جديدة (5 ، 11 ، 99) ؛
تتمثل ميزة استخدام وظيفة مُنشئ في أنه يمكن أن يتلقى بعض المعلمات عند إنشاء كائن.
نسخة الكود كما يلي:
<script type = "text/javaScript">
اختبار الوظيفة (الاسم) {
this.occupation = "coder" ؛
this.name = name ؛
this.whoareyou = function () {
إرجاع "أنا" + this.name + "وأنا" + this.occupation ؛
}
}
var obj = اختبار جديد ('trigkit4') ؛ // إنشاء كائنات مختلفة باستخدام نفس المنشئ
var obj2 = اختبار جديد ('الطالب') ؛
obj.whoareyou () ؛ // "أنا trigger4 وأنا زاوية"
OBJ2. WHOUAREYOU () ؛ // "أنا طالب وأنا زاوية"
</script>
حسب الاتفاقية ، يجب أن نستفيد من الحرف الأول من وظيفة المنشئ لتمييزها بشكل كبير عن الوظيفة العامة.
الشكلين التاليين من الوظائف المحددة مكافئين.
نسخة الكود كما يلي:
<script type = "text/javaScript">
var test = function () {
تنبيه ("Hello World") ؛
}
تنبيه (typeof (اختبار)) ؛ // وظيفة الإخراج
</script>
فيما يلي اختبار متغير ، يتم تعيين قيمته الأولية لكيان وظيفة
نسخة الكود كما يلي:
<script type = "text/javaScript">
اختبار الوظيفة () {
تنبيه ("Hello World") ؛
}
تنبيه (typeof (اختبار)) ؛ // وظيفة الإخراج
</script>
ألقِ نظرة على نموذج الوظيفة المحددة التالية:
نسخة الكود كما يلي:
<script type = "text/javaScript">
اختبار الوظيفة () {
تنبيه ("Hello World") ؛
} ؛
Test () ؛ // إنه في الواقع يخرج مرحبًا ، أليس كذلك؟
اختبار الوظيفة () {
تنبيه ("مرحبا") ؛
} ؛
اختبار () ؛ // فقط ، مرحبا هو الإخراج
</script>
من الواضح أن الوظيفة الأولى لم تنجح ، أليس كذلك؟ نحن نعلم أن محرك تحليل JavaScript لا يقوم بتنفيذ كود سطر ، ولكنه ينفذ رمز قطعة تلو الأخرى. في تحليل وتنفيذ نفس البرنامج ، سيتم تنفيذ بيانات الوظيفة الخاصة بصيغة التعريف أولاً ، وبالتالي فإن أول منطق رمز محدد قد تم الكتابة عليه بواسطة الثانية ، وبالتالي سيتم تنفيذ نفس الوظيفة مرتين فقط.
تعمل كقيمة
الوظائف ليست فقط بناء جملة ، ولكن أيضا قيمة في JS. بمعنى أنه يمكن تعيين الوظيفة إلى متغير ، وتخزينها في سمة كائن أو عنصر من صفيف ، وتم نقله إلى وظيفة أخرى كمعلمة.
اسم الوظيفة غير مرئي في الواقع ، إنه مجرد اسم متغير ، يشير إلى كائن الوظيفة
نسخة الكود كما يلي:
<script type = "text/javaScript">
وظيفة Square (x ، y) {
إرجاع x*y ؛
}
var s = مربع ؛ // s و square تشير إلى نفس الوظيفة
مربع (2،3) ؛ // 6
S (2،4) ؛ // 8
</script>
بالإضافة إلى تعيين وظائف للمتغيرات ، يمكن أيضًا تعيين وظائف لسمات الكائنات. عندما تسمى وظيفة سمة كائن ، تسمى الوظيفة طريقة.
نسخة الكود كما يلي:
<script type = "text/javaScript">
var obj = {square: function (x ، y) {// يتم قياس الكائن مباشرة
إرجاع x*y ؛
}} ؛
var ect = obj.square (2،3) ؛
</script>
سمة النموذج الأولي
تحتوي كل وظيفة على سمة النموذج الأولي ، والتي تشير إلى مرجع إلى كائن ، والذي يسمى كائن النموذج الأولي.
انظر: ملاحظات التعلم JavaScript (V) النموذج الأولي وسلسلة النموذج الأولي
وظائف متقدمة
وظيفة الترتيب الأعلى هنا ليست وظيفة الترتيب العالي في العدد العالي. ما يسمى وظيفة الترتيب العالي هي وظيفة تدير الوظيفة. يتلقى وظيفة واحدة أو أكثر كمعلمات وإرجاع وظيفة جديدة.