75 lines
3.2 KiB
Markdown
75 lines
3.2 KiB
Markdown
![]() |
---
|
|||
|
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;
|
|||
|
}
|
|||
|
```
|