الوظيفة هي جزء من التعليمات البرمجية التي يمكن إعادة استخدامها والتي يتم تشغيلها عند استدعائها. تسمح لك الوظائف بإعادة استخدام الكود ، مما يجعله أكثر نمطية ويسهل صيانته.
هناك عدة طرق لإنشاء وظائف في JavaScript. هنا سوف تتعلم الطرق المختلفة لإنشاء الوظائف وكيفية استخدامها.
إعلانات الوظيفة: الطريق المباشر
إحدى الطرق التي يمكنك من خلالها إنشاء وظائف في JavaScript هي من خلال إعلانات الوظائف. إعلان الوظيفة هو وظيفة في JavaScript تتبع بناء الجملة أدناه.
وظيفةاسم وظيفة(حدود) {
// كود هنا ...
يعود"هذا إعلان عن وظيفة";
}
تتضمن مكونات كتلة التعليمات البرمجية أعلاه ما يلي:
- ال وظيفة الكلمة الأساسية: هذه الكلمة الأساسية تعلن عن وظيفة.
- اسم وظيفة: هذا هو اسم الوظيفة. في الممارسة العملية ، يجب أن تكون وصفية وذات مغزى قدر الإمكان ، مع الإشارة إلى وظيفة الوظيفة.
- حدود: هذا يمثل معلمات الوظيفة. المعلمات هي قائمة اختيارية من المتغيرات التي يمكنك تمريرها إلى دالة عند استدعائها.
- جسم الوظيفة: يحتوي على الكود الذي ستعمله الوظيفة عند استدعائها. إنه محاط بأقواس مجعدة {} ويمكن أن تحتوي على أي كود JavaScript صالح.
- ال يعود البيان: يوقف هذا البيان تنفيذ الوظيفة ويعيد القيمة المحددة. في الحالة المذكورة أعلاه ، سيؤدي استدعاء الدالة إلى إرجاع السلسلة النصية "This is a function framework".
على سبيل المثال ، يأخذ إعلان الوظيفة أدناه ثلاثة أرقام كمعلمات ويعيد مجموعها.
وظيفةaddThreeNumbers. إضافة ثلاثة أرقام(أ ، ب ، ج) {
يعود أ + ب + ج ؛
}
لاستدعاء إعلان دالة في JavaScript ، اكتب اسم الوظيفة متبوعًا بمجموعة من الأقواس (). إذا كانت الوظيفة تأخذ أي معلمات ، فمررها كوسيطات داخل الأقواس.
على سبيل المثال:
addThreeNumbers (1, 2, 3) // 6
تستدعي كتلة التعليمات البرمجية أعلاه ملف addThreeNumber الدالات وتمرير 1 و 2 و 3 كوسيطات للدالة. إذا قمت بتشغيل هذا الرمز ، فسيعيد القيمة 6.
روافع جافا سكريبت تعريفات الوظائف ، مما يعني أنه يمكنك الاتصال بها قبل تحديدها.
على سبيل المثال:
هو مرفوع () ؛ // الوظيفة مرفوعة
وظيفةمرفوع() {
وحدة التحكم.سجل("الوظيفة مرفوعة");
يعودحقيقي;
}
كما هو موضح في كتلة التعليمات البرمجية أعلاه ، الاتصال مرفوع قبل تعريفه لن يؤدي إلى خطأ.
تعبيرات الوظيفة: الدالات كقيم
في JavaScript ، يمكنك تحديد وظيفة كتعبير. يمكنك بعد ذلك تعيين قيمة الدالة إلى متغير أو استخدامها كوسيطة لدالة أخرى.
تُعرف أيضًا باسم الدوال المجهولة نظرًا لعدم وجود أسماء لها ، ولا يمكنك الاتصال بها إلا من المتغير الذي عينتها له.
يوجد أدناه بناء الجملة لتعبير دالة:
مقدار ثابت functionName = وظيفة () {
يعود"تعبير وظيفي";
};
لاستدعاء تعبير وظيفي في JavaScript ، اكتب اسم المتغير الذي عينته للوظيفة متبوعًا بمجموعة من الأقواس (). إذا كانت الوظيفة تأخذ أي معلمات ، فمررها كوسيطات داخل الأقواس.
على سبيل المثال:
اسم وظيفة()؛ // تعبير وظيفي
تكون تعبيرات الوظائف سهلة الاستخدام عند إنشاء وظائف تعمل في وظائف أخرى. تتضمن الأمثلة النموذجية معالجات الأحداث وعمليات الاسترجاعات الخاصة بهم.
على سبيل المثال:
button.addEventListener ("انقر", وظيفة (حدث) {
وحدة التحكم.سجل("لقد نقرت على زر!");
});
استخدم المثال أعلاه تعبيرًا وظيفيًا يأخذ الامتداد حدث حجة باعتبارها رد إلى addEventListener وظيفة. لا يتعين عليك استدعاء الوظيفة صراحةً عند استخدام تعبير وظيفي باعتباره رد اتصال. يتم استدعاؤه تلقائيًا من خلال وظيفته الأصلية.
في الحالة أعلاه ، عندما يتلقى مستمع الحدث ملف انقر الحدث ، فإنه يستدعي وظيفة رد الاتصال ويمرر حدث الكائن كحجة.
على عكس تعريفات الوظائف ، لا يتم رفع تعبيرات الوظائف ، لذلك لا يمكنك استدعاءها قبل تحديدها. ستؤدي محاولة الوصول إلى تعبير دالة قبل تحديده إلى ملف المرجع خطأ.
على سبيل المثال:
هو مرفوع () ؛ // ReferenceError: لا يمكن الوصول إلى 'isHoisted' قبل التهيئة
مقدار ثابت مرفوع = وظيفة () {
وحدة التحكم.سجل("الوظيفة مرفوعة");
};
وظائف السهم: مدمجة ومحدودة
قدم ES6 اختصارًا لكتابة وظائف مجهولة في JavaScript تسمى وظائف السهم. لديهم بناء جملة موجز يمكن أن يجعل شفرتك أكثر قابلية للقراءة ، خاصة عند التعامل مع وظائف قصيرة أحادية السطر.
على عكس الطرق الأخرى لإنشاء الوظائف ، لا تتطلب وظائف الأسهم امتداد وظيفة كلمة رئيسية. يتكون تعبير دالة السهم من ثلاثة أجزاء:
- زوج من الأقواس (()) تحتوي على المعلمات. يمكنك حذف الأقواس إذا كانت الوظيفة تحتوي على معلمة واحدة فقط.
- سهم (=>) ، والتي تتكون من علامة التساوي (=) وعلامة أكبر من (>).
- زوج من الأقواس المتعرجة التي تحتوي على وظيفة الجسم. يمكنك حذف الأقواس المتعرجة إذا كانت الوظيفة تتكون من تعبير واحد.
على سبيل المثال:
// معلمة واحدة ، عودة ضمنية
مقدار ثابت functionName = معامل =>وحدة التحكم.سجل("وظيفة سهم المعلمة الواحدة")
// معلمات متعددة ، عودة صريحة
مقدار ثابت functionName = (المعلمة_1 ، المعلمة_2) => {
يعود"وظيفة سهم متعدد المعلمات"
};
عند حذف الأقواس المتعرجة ، تقوم وظيفة السهم ضمنيًا بإرجاع التعبير المفرد ، لذلك ليست هناك حاجة إلى يعود كلمة رئيسية. من ناحية أخرى ، إذا لم تحذف الأقواس المتعرجة ، فيجب عليك إرجاع قيمة صراحة باستخدام يعود كلمة رئيسية.
وظائف الأسهم لها أيضًا ملف هذا ملزمة مقارنة بالوظائف العادية. في الدوال العادية ، تكون قيمة هذا يعتمد على كيفية استدعاء الوظيفة. في وظيفة السهم ، هذا ملتزم دائمًا بـ هذا قيمة النطاق المحيط.
على سبيل المثال:
مقدار ثابت فو = {
اسم: "ديف",
تحية: وظيفة () {
setTimeout (() => {
وحدة التحكم.سجل(مرحبا اسمي ${هذا.اسم}`);
}, 1000);
},
};
foo.greet () ؛ // تسجيلات "مرحبًا ، اسمي ديف" بعد ثانية واحدة
في المثال أعلاه ، يعمل السهم داخل ملف تحية طريقة الوصول إلى هذا الإسم، على الرغم من أن setTimeout وظيفة تستدعي ذلك. سيكون للوظيفة العادية هذا مرتبط بالكائن العالمي.
كما يوحي الاسم ، فإن الوظيفة التي يتم استدعاؤها على الفور (IIFE) هي وظيفة يتم تشغيلها بمجرد تحديدها.
إليك هيكل IIFE:
(وظيفة () {
// كود هنا
})();(() => {
// كود هنا
})();
(وظيفة (param_1 ، param_2) {
وحدة التحكم.log (param_1 * param_2) ؛
})(2, 3);
يتكون IIFE من تعبير وظيفي ملفوف داخل زوج من الأقواس. اتبعه بزوج من الأقواس خارج العلبة لاستدعاء الوظيفة.
يمكنك استخدام IIFEs لإنشاء نطاقات وإخفاء تفاصيل التنفيذ ومشاركة البيانات بين العديد من البرامج النصية. تم استخدامها مرة واحدة كملف نظام الوحدة النمطية في JavaScript.
إنشاء وظيفة بعدة طرق مختلفة
يعد فهم كيفية إنشاء وظائف في JavaScript أمرًا بالغ الأهمية. هذا صحيح بالنسبة لوظيفة أساسية تقوم بإجراء عملية حسابية بسيطة أو وظيفة معقدة تتفاعل مع أجزاء أخرى من التعليمات البرمجية الخاصة بك.
يمكنك استخدام الأساليب التي تمت مناقشتها أعلاه لإنشاء وظائف في JavaScript وهيكل التعليمات البرمجية الخاصة بك وتنظيمها. حدد الطريقة التي تناسب متطلباتك على أفضل وجه ، حيث أن لكل منها مزايا وتطبيقات متنوعة.