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

75 lines
3.2 KiB
Markdown
Raw Permalink Normal View History

---
id: 587d7b8e367417b2b2512b5f
title: Передавайте аргументи, щоб уникнути зовнішньої залежності у функції
challengeType: 1
forumTopicId: 301234
dashedName: pass-arguments-to-avoid-external-dependence-in-a-function
---
# --description--
Остання задача полягала в тому, щоб на крок приблизитись до функціональних принципів програмування, однак все ще чогось не вистачає.
Ми не змінили значення глобальної змінної, але функція `incrementer` не буде працювати без глобальної змінної `fixedValue` being there.
Інший принцип функціонального програмування - завжди відкрито заявляти про свої залежності. Це означає, що якщо функція залежить від змінної чи об'єкту, тоді ця змінна чи об'єкт передаються безпосередньо в функцію в якості аргументу.
Цей принцип має ряд хороших наслідків. Цю функцію легше перевірити, ви точно знаєте, який вхід потребується, і вона ні від чого не буде залежати у вашій програмі.
Це може дати вам більше впевненості при зміні чи видаленні, чи додаванні нового коду. Ви б знали, що ви можете чи не можете змінити, і ви можете бачити, де розміщені потенційні пастки.
Нарешті, функція завжди виробляє один і той же набір вхідних данних, незалежно від того, яка частина коду його виконує.
# --instructions--
Давайте оновимо функцію `incrementer` для чіткого визначення залежностей.
Напишіть функцію `incrementer` так, щоб вона прийняла аргумент, а потім повертала результат після збільшення значення на одиницю.
# --hints--
Ваша функція `incrementer` не повинна змінювати значення `fixedValue` (яка є `4`).
```js
assert(fixedValue === 4);
```
Ваша функція `incrementer` повинна прийняти аргумент.
```js
assert(incrementer.length === 1);
```
Ваша функція `incrementer` повинна повернути значення, що на одиницю більше значення `fixedValue` value.
```js
const __newValue = incrementer(fixedValue);
assert(__newValue === 5);
```
# --seed--
## --seed-contents--
```js
// The global variable
let fixedValue = 4;
// Only change code below this line
function incrementer() {
// Only change code above this line
}
```
# --solutions--
```js
let fixedValue = 4;
function incrementer(fixedValue) {
return fixedValue + 1;
}
```