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