دعنا ندعي أننا سنكمل المهمة الآن: اكتب رمز JavaScript قدر الإمكان وفقًا لمبادئ اللغات الوظيفية.
السلسلة التالية من المقالات هي السماح لك وأنا البدء في هذه الرحلة. أولاً ، نحتاج إلى تصحيح بعض مفاهيم أخطاء اللغة الوظيفية التي قد تكون في ذهنك.
الصيغ الوظيفية في لغة JS يساء فهمها بشكل خطير.
من الواضح أن هناك الكثير من المطورين الذين يرغبون في استخدام نموذج JavaScript الوظيفي كل يوم. أود أن أقول أن هناك جزءًا أكبر من مطوري JavaScript الذين لا يفهمون هذه الأشياء حقًا.
أعتقد أن السبب في ذلك هو أن معظم لغات التطوير المستخدمة على خادم الويب مستمدة من C ، والجميع يعلم أن هذه اللغات ليست لغات وظيفية.
هناك عموما مستويين من الارتباك. الطبقة الأولى تدور حول الاستخدام في المثال التالي ، وهو استخدام شائع جدًا في jQuery:
$ (". signup"). انقر فوق (function (event) {$ (في الكود أعلاه: نقوم بتمرير وظيفة مجهولة كمعلمة ، وهي وظيفة رد الاتصال سيئة السمعة في JavaScript. هل سيتم استدعاء هذه الوظائف؟ مُطْلَقاً!
يوضح المثال أعلاه ميزة رئيسية للغة الوظيفية: الدالة هي معلمة. من ناحية أخرى ، ينتهك هذا المثال تقريبًا جميع نماذج البرمجة الوظيفية التي يمكن انتهاكها باستخدام ثلاثة أسطر فقط من الكود.
المستوى الثاني من الشك هو أكثر دقة. تحقق من هذا: فقط عدد قليل من مطوري JS العصري ينظرون إلى أنفسهم مثل هذا:
حسنًا ، هذا جيد حقًا! لكن لدي بالفعل فهم كامل للبرمجة الوظيفية ، وأنا أستخدم underscore.js في جميع مشاريعي.
UndersCore.js هي مكتبة JavaScript مشهورة للغاية وبكلية. على سبيل المثال: افترض أن لدي مجموعة من الكلمات وأحتاج إلى أول حرفين لكل كلمة. هذا بسيط للغاية في الكتابة باستخدام insroscore.js:
var firstTwoLetters = function (Words) {return _.map (words ، function (word) {return _.first (word ، 2) ؛}) ؛} ؛انظر إلى هذا مثال JavaScript. لقد استخدمت الوظائف الرائعة والعملية في صيغة الوظيفة: _.map و _.first. ما رأيك في هذا؟
على الرغم من أن وظائف مثل UndersCore.js و _.map كلاهما نماذج وظيفية مفيدة ، إلا أن تجميع هذه الأشياء معًا في هذا المثال لا يزال يصعب فهمه. هل نحتاج حقًا إلى القيام بذلك؟
إذا بدأنا التفكير في كيفية أن نكون أكثر "وظيفية" ، فربما يمكننا إعادة كتابة المثال أعلاه مثل هذا:
// ... القليل من magicvar firsttwoletters = map (الأول (2)) ؛
إذا كنت تفكر في الأمر بعناية ، فإن هذا السطر من الكود له نفس التأثير مثل الخطوط الخمسة المذكورة أعلاه. العديد من الكلمات هي مجرد معلمات أو أصحاب نائبة. المنطق الحقيقي هو الجمع بين وظيفة الخريطة ، الوظيفة الأولى والثابت 2 بطريقة ذات معنى.
قد يتساءل بعض الناس: ما هو السحر في هذا المثال؟ بعد كل شيء ، يشبه إلى حد ما المفاخرة أن نقول أن أي مثال سحري ، أليس كذلك؟
أخطط لاستخدام المادتين التاليتين لشرح ما هو المثال أعلاه السحري. إذا كنت فضوليًا ، فيمكنك متابعة القراءة.
هذه السلسلة من المدونات هي مساعدتك في كيفية تطبيق جمال البرمجة الوظيفية على رمز JavaScript الخاص بك.
في القسم التالي ، سأناقش عناصر مختلفة من الوظيفية وغير الوظيفية في لغة JavaScript. من خلال هذه المعرفة ، يمكننا ببطء تشكيل نظام كامل للبرمجة الوظيفية في أدمغتنا من خلال دمج هذه العناصر معًا وفهم أدائها في JavaScript.