Files
freeCodeCamp/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/functional-programming/pass-arguments-to-avoid-external-dependence-in-a-function.md

3.2 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7b8e367417b2b2512b5f Передавайте аргументи, щоб уникнути зовнішньої залежності у функції 1 301234 pass-arguments-to-avoid-external-dependence-in-a-function

--description--

Остання задача полягала в тому, щоб на крок приблизитись до функціональних принципів програмування, однак все ще чогось не вистачає.

Ми не змінили значення глобальної змінної, але функція incrementer не буде працювати без глобальної змінної fixedValue being there.

Інший принцип функціонального програмування - завжди відкрито заявляти про свої залежності. Це означає, що якщо функція залежить від змінної чи об'єкту, тоді ця змінна чи об'єкт передаються безпосередньо в функцію в якості аргументу.

Цей принцип має ряд хороших наслідків. Цю функцію легше перевірити, ви точно знаєте, який вхід потребується, і вона ні від чого не буде залежати у вашій програмі.

Це може дати вам більше впевненості при зміні чи видаленні, чи додаванні нового коду. Ви б знали, що ви можете чи не можете змінити, і ви можете бачити, де розміщені потенційні пастки.

Нарешті, функція завжди виробляє один і той же набір вхідних данних, незалежно від того, яка частина коду його виконує.

--instructions--

Давайте оновимо функцію incrementer для чіткого визначення залежностей.

Напишіть функцію incrementer так, щоб вона прийняла аргумент, а потім повертала результат після збільшення значення на одиницю.

--hints--

Ваша функція incrementer не повинна змінювати значення fixedValue (яка є 4).

assert(fixedValue === 4);

Ваша функція incrementer повинна прийняти аргумент.

assert(incrementer.length === 1);

Ваша функція incrementer повинна повернути значення, що на одиницю більше значення fixedValue value.

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;
}