هناك صيغة أخرى بسيطة جدًا وموجزة لإنشاء الدوال، وغالبًا ما تكون أفضل من التعبيرات الوظيفية.
يطلق عليها اسم "وظائف السهم"، لأنها تبدو كما يلي:
دع func = (arg1, arg2, ..., argN) => Expression;
يؤدي هذا إلى إنشاء دالة func
التي تقبل الوسائط arg1..argN
، ثم تقوم بتقييم expression
الموجود على الجانب الأيمن باستخدامها وإرجاع النتيجة.
بمعنى آخر، إنها النسخة المختصرة من:
دع func = function(arg1, arg2, ..., argN) { تعبير العودة };
دعونا نرى مثالا ملموسا:
دع المبلغ = (أ، ب) => أ + ب؛ /* دالة السهم هذه هي شكل أقصر من: دع المبلغ = الوظيفة (أ، ب) { العودة أ + ب؛ }; */ تنبيه(مجموع(1, 2)); // 3
كما ترون، (a, b) => a + b
تعني دالة تقبل وسيطتين باسم a
و b
. عند التنفيذ، يقوم بتقييم التعبير a + b
وإرجاع النتيجة.
إذا كان لدينا وسيطة واحدة فقط، فيمكن حذف الأقواس حول المعلمات، مما يجعلها أقصر.
على سبيل المثال:
دع مزدوج = ن => ن * 2؛ // تقريبًا مثل: Let double = function(n) { return n * 2 } تنبيه(مزدوج(3)); // 6
إذا لم تكن هناك وسائط، تكون الأقواس فارغة، ولكن يجب أن تكون موجودة:
دعنا نقولHi = () => تنبيه("مرحبا!"); sayHi();
يمكن استخدام وظائف الأسهم بنفس طريقة استخدام التعبيرات الوظيفية.
على سبيل المثال، لإنشاء دالة ديناميكيًا:
Let age = موجه("ما هو عمرك؟", 18); دع الترحيب = (العمر < 18) ؟ () => تنبيه('مرحبًا!'): () => تنبيه("تحياتي!"); مرحباً()؛
قد تبدو وظائف الأسهم غير مألوفة وغير قابلة للقراءة في البداية، ولكن ذلك يتغير بسرعة مع اعتياد العين على البنية.
إنها ملائمة جدًا لإجراءات بسيطة من سطر واحد، عندما نكون كسالى جدًا بحيث لا نستطيع كتابة العديد من الكلمات.
كانت وظائف السهم التي رأيناها حتى الآن بسيطة للغاية. لقد أخذوا الوسيطات من يسار =>
وقاموا بتقييمها وأعادوا التعبير الموجود على الجانب الأيمن معهم.
في بعض الأحيان نحتاج إلى وظيفة أكثر تعقيدًا، مع تعبيرات وعبارات متعددة. في هذه الحالة، يمكننا أن نحيطهم بأقواس مجعدة. والفرق الرئيسي هو أن الأقواس المتعرجة تتطلب return
داخلها لإرجاع قيمة (تمامًا كما تفعل الدالة العادية).
مثله:
Let sum = (a, b) => { // يفتح القوس المتعرج دالة متعددة الأسطر دع النتيجة = أ + ب؛ نتيجة الإرجاع؛ // إذا استخدمنا الأقواس المتعرجة، فسنحتاج إلى "عودة" صريحة }; تنبيه(مجموع(1, 2)); // 3
المزيد في المستقبل
لقد امتدحنا هنا وظائف السهم للإيجاز. ولكن هذا ليس كل شيء!
وظائف السهم لها ميزات أخرى مثيرة للاهتمام.
لدراستها بشكل متعمق، نحتاج أولاً إلى التعرف على بعض الجوانب الأخرى لجافا سكريبت، لذلك سنعود إلى وظائف الأسهم لاحقًا في الفصل إعادة النظر في وظائف الأسهم.
في الوقت الحالي، يمكننا بالفعل استخدام وظائف الأسهم لإجراءات السطر الواحد وعمليات الاسترجاعات.
تعد وظائف الأسهم مفيدة في الإجراءات البسيطة، خاصة بالنسبة للسطور الفردية. أنها تأتي في نكهتين:
بدون الأقواس المتعرجة: (...args) => expression
– الجانب الأيمن عبارة عن تعبير: تقوم الدالة بتقييمه وإرجاع النتيجة. يمكن حذف الأقواس، إذا كان هناك وسيطة واحدة فقط، على سبيل المثال n => n*2
.
باستخدام الأقواس المتعرجة: (...args) => { body }
- تسمح لنا الأقواس بكتابة عبارات متعددة داخل الدالة، لكننا نحتاج إلى return
صريح لإرجاع شيء ما.
استبدل تعبيرات الوظائف بوظائف الأسهم في الكود أدناه:
وظيفة اسأل (سؤال، نعم، لا) { إذا (تأكيد(سؤال)) نعم(); وإلا لا()؛ } بسأل( "هل توافق؟"، وظيفة () { تنبيه ("لقد وافقت.")؛ }, function() { تنبيه ("لقد ألغيت التنفيذ."); } );
وظيفة اسأل (سؤال، نعم، لا) { إذا (تأكيد(سؤال)) نعم(); وإلا لا()؛ } بسأل( "هل توافق؟"، () => تنبيه ("لقد وافقت.")، () => تنبيه ("لقد ألغيت التنفيذ.") );
تبدو قصيرة ونظيفة، أليس كذلك؟