mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-05 16:00:38 -04:00
75 lines
3.1 KiB
Markdown
75 lines
3.1 KiB
Markdown
---
|
||
id: 587d7b8e367417b2b2512b5f
|
||
title: Передача аргументів для уникнення зовнішньої залежності у функції
|
||
challengeType: 1
|
||
forumTopicId: 301234
|
||
dashedName: pass-arguments-to-avoid-external-dependence-in-a-function
|
||
---
|
||
|
||
# --description--
|
||
|
||
Попереднє завдання було на крок ближче до принципів функційного програмування, однак чогось досі не вистачає.
|
||
|
||
Ми не змінили значення глобальної змінної, але функція `incrementer` не буде працювати без глобальної змінної `fixedValue`.
|
||
|
||
Інший принцип функційного програмування — завжди оголошувати свої залежності відкрито. Це означає, що якщо функція залежить від змінної чи об’єкта, тоді ця змінна чи об’єкт передаються прямо до функції як аргумент.
|
||
|
||
З цього принципу випливає декілька хороших наслідків. Цю функцію легше протестувати, ви знаєте її вхідні дані і вона ні від чого не залежить у вашій програмі.
|
||
|
||
Таким чином ви будете впевненішими при зміні, видаленні чи додаванні нового коду. Ви знатимете, що можна змінити і бачитимете, де розміщені потенційні пастки.
|
||
|
||
Зрештою, функція завжди виробляє однакові вихідні дані для однакових вхідних даних, незалежно від того, яка частина коду виконує їх.
|
||
|
||
# --instructions--
|
||
|
||
Оновимо функцію `incrementer` так, щоб вона чітко оголошувала свої залежності.
|
||
|
||
Напишіть функцію `incrementer` так, щоб вона приймала аргумент, а потім повертала значення, збільшене на один.
|
||
|
||
# --hints--
|
||
|
||
Ваша функція `incrementer` не повинна змінювати значення `fixedValue` (дорівнює `4`).
|
||
|
||
```js
|
||
assert(fixedValue === 4);
|
||
```
|
||
|
||
Ваша функція `incrementer` повинна приймати аргумент.
|
||
|
||
```js
|
||
assert(incrementer.length === 1);
|
||
```
|
||
|
||
Ваша функція `incrementer` повинна повертати значення, яке більше на одиницю за `fixedValue`.
|
||
|
||
```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;
|
||
}
|
||
```
|