Files
freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/pass-arguments-to-avoid-external-dependence-in-a-function.md
2022-10-20 09:13:17 -07:00

2.6 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7b8e367417b2b2512b5f Pass Arguments to Avoid External Dependence in a Function 1 301234 pass-arguments-to-avoid-external-dependence-in-a-function

--description--

التحدي الأخير كان يقترب خطوة من مبادئ الـ functional programming، ولكن لا يزال هناك شيء مفقود.

لم نقم بتغيير قيمة المتغير الـ global، ولكن الدالة incrementer لن تعمل بدون وجود المتغير الـ global و هو fixedValue، هناك.

وهناك مبدأ آخر للـ functional programming وهو تعريف تبعياتك بشكل صريح. هذا يعني إذا كان الـ function يعتمد على متغير أو object موجود، قم بتمرير هذا المتغير أو الـ object مباشرة إلى الـ function كـ argument.

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

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

وأخيرا، سينتج الـ function دائما نفس الناتج لنفس المجموعة من المدخلات، بغض النظر عن الجزء من الكود الذي ينفذه.

--instructions--

دعونا نقوم بتحديث دالة incrementer لنعرف بوضوح تبعياتها.

اكتب دالة incrementer بحيث أنها تأخذ arguments، ثم ترجع نتيجة بعد زيادة القيمة بواحد.

--hints--

لا ينبغي للدالة incrementer أن تغير قيمة fixedValue (والتي هي 4).

assert(fixedValue === 4);

يجب أن تأخذ دالة incrementer الخاصة بك، argument.

assert(incrementer.length === 1);

يجب أن تعيد دالة incrementer قيمة أكبر من fixedValue بواحد.

const __newValue = incrementer(fixedValue);
assert(__newValue === 5);

--seed--

--seed-contents--

// The global variable
let fixedValue = 4;

// Only change code below this line
function incrementer() {


  // Only change code above this line
}

--solutions--

let fixedValue = 4;

function incrementer(fixedValue) {
  return fixedValue + 1;
}