Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() البرمجة الوظيفية في JavaScript الجزء 1 - مقدمة - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2022-05-25
تطوير البرمجيات

البرمجة الوظيفية في JavaScript الجزء 1 - مقدمة

The Codest

بافيل جيد

Vue.js مطور Vue.js

اقرأ مقالنا لاكتشاف قوة البرمجة الوظيفية في JavaScript. تصنف البرمجة الوظيفية كنموذج تعريفي حيث يتم فصل وصف البرنامج عن العمليات الحسابية.

ما هي البرمجة الوظيفية؟

"بعبارات بسيطة، البرمجة الوظيفية هي تطوير البرمجيات أسلوب يركز بشكل كبير على استخدام الوظائف"

مقتطفات من الكتاب: لويس أتينسيو "البرمجة الوظيفية في JavaScript. كيفية تحسين JavaScript البرامج باستخدام التقنيات الوظيفية"

البرمجة الوظيفية مصنفة على أنها توضيحية النموذج حيث يتم فصل وصف البرنامج عن العمليات الحسابية. ينصب التركيز هنا على استخدام التعبيرات لوصف منطق البرنامج. هذا هو عكس حتمية البرمجة، حيث الكود يتم تنفيذه خطوة بخطوة ويخبر الكمبيوتر بالتفصيل كيفية إنجاز المهمة.

التصريحية مقابل الحتمية، أمثلة

افترض أن لدينا حالة يكون لدينا فيها شبكة مصفوفة من الأعداد الصحيحة ونحتاج إلى رفع كل منها إلى القوة الثانية ثم تحديد القيم غير الزوجية فقط.

حتمية

const numer = [1، 2، 3، 3، 4، 5، 6، 6، 7، 8، 9];

تشكل النتائج = []

بالنسبة إلى (دع i = 0؛ i < numbers.length; i++) {
const secondPower = Math.pow(numbers[i]، 2)
إذا كانت (secondPower & 1) { // أو % 2 ولكن العمليات على البتات أسرع
النتائج.push(secondPower);
}
}

console.log(results) // [1, 9, 25, 49, 81]

أما بالنسبة إلى حتمية الحل، يظهر التركيز على تفاصيل التنفيذ بوضوح. في الحلقة، يمكنك رؤية فهرس المصفوفة بناءً على الحاجة إلى التحكم في عدد العناصر. نظرًا للعدد الكبير من التفاصيل في الشيفرة، من الصعب التركيز على ما تقوم به. دعونا نركز الآن على توضيحية الحل.

إعلانية

const risesToSecondPower = (num) => Math.pow(num, 2)
const isOdd = (num) = (num) => num & 1;

الأعداد = [1، 2، 3، 3، 4، 5، 6، 7، 8، 9]

تشكل النتائج = الأرقام
.خريطة(يرتفع إلى القوة الثانية)
.فلتر(isOdd);

console.log(results) // [1, 9, 25, 49, 81]

في هذا الحل، تم فصل التنفيذ عن الاستدعاء من خلال نقل المنطق إلى دوال منفصلة. بفضل هذا الحل، يمكننا التركيز فقط على أسماء الدوال التي تصف ما يحدث فيها. بالإضافة إلى ذلك، تم رفع مستوى التجريد ويمكن الآن إعادة استخدام المنطق. والآن، لنركز على الاستدعاء. لا يمكنك أن ترى أي تفاصيل فيه، فقط وصف يخبرك بما تفعله هذه الشيفرة، خطوة بخطوة:

  1. خريطة(يرتفع إلى الطاقة الثانية) - أخذ كل عنصر من عناصر المصفوفة ورفعه للقوة الثانية,
  2. مرشح(isOdd) - تصفية وتحديد العناصر الفردية.

المزايا

البرمجة الوظيفية العديد من الفوائد. عندما يتعلق الأمر بـ JavaScriptفإن استخدام الدوال أمر طبيعي لأنها لغة وظيفية. حتى الفصول في هذه اللغة هي "سكر نحوي" وهي مكونة في الأسفل من الدوال.

عندما يتعلق الأمر بقابلية القراءة، في النهج الحتمي، عادةً ما تصبح الشيفرة قائمة بأسماء الدوال التي يمكن قراءتها بالتسلسل دون الخوض في منطقها. ونتيجة لذلك، لا نركز على تفاصيل التنفيذ.

ميزة أخرى هي الالتزام باصطلاح الكائنات الثابتة. وبفضل هذا النهج، تصبح الشيفرة أكثر أمانًا لأن المراجع في JavaScript قوية للغاية ومن السهل تعديل الكائن غير المرغوب فيه.

في البرمجة الوظيفية، يتم تقسيم الشيفرة البرمجية إلى دوال صغيرة يمكن اعتبارها بسهولة شيفرة مجردة قابلة لإعادة الاستخدام.

وظيفة نقية

إحدى الاعتبارات المهمة في البرمجة الوظيفية هي الدوال البحتة. لإنشاء مثل هذه الدالة، عليك أن تتذكر بعض القواعد:

  • تعتمد النتيجة التي ترجعها الدالة على معلمات الدخل فقط,
  • لا تستخدم المتغيرات العامة والمتغيرات التي تتجاوز نطاقك الخاص,
  • لا تغير حالة المعلمات,
  • لا تحتوي الدوال البحتة على أي "آثار جانبية" (عادةً ما تعدل خصائص الكائن),
  • للمعلمات المُدخَلة المُشار إليها، ستُعيد دائمًا النتيجة نفسها,
  • دالة بحتة تأخذ دومًا متغيرًا وترجع دومًا متغيرًا.
// دالة Inpure
دع العداد = 5
...
عداد مضاعف = (مضاعف) => {
العداد = العداد * المضاعف
}

مضاعف العدّاد(2) //- -> ؟ النتيجة تعتمد على القيمة الأولية
// دالة نقية
المضاعفات = (المضاعف) => (القيمة) => القيمة * المضاعف
مضاعف مضاعف (2) = (مضاعف) مضاعف (2)

كونت عداد = مضروب في اثنين(5) // -> 10

الدالة الأولى لا يمكن التنبؤ بها لأنها تعتمد على معلمة خارجية يمكن أن تتغير. الدالة الثانية شفافة، فهي تعتمد فقط على معلمات المدخلات، ولا تعدلها، ولا تستخدم متغيرات خارج النطاق. الدالة الثالثة شفافة لأنها تعتمد على معلمات ولا تعدّلها ولا تستخدم متغيرات خارج النطاق، وتُرجع قيمة جديدة.

راية التعاون

مقالات ذات صلة

تطوير البرمجيات

أدوات جافا سكريبت في العمل

اكتشف بعض أدوات استرجاع JavaScript لرفع مستوى لعبتك البرمجية. اعرف المزيد عن ESLint وPrettier وHussky!

The Codest
رضا سالمي مطور React

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic