freeCodeCamp/curriculum/challenges/russian/02-javascript-algorithms-an.../functional-programming/pass-arguments-to-avoid-ext...

65 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
id: 587d7b8e367417b2b2512b5f
title: Pass Arguments to Avoid External Dependence in a Function
challengeType: 1
videoUrl: ''
localeTitle: 'Пропустить аргументы, чтобы избежать внешней зависимости в функции'
---
## Description
<section id="description"> Последняя задача была шагом ближе к принципам функционального программирования, но до сих пор что-то не хватает. Мы не изменили значение глобальной переменной, но <code>incrementer</code> функции не получило бы работу без глобальной переменной <code>fixedValue</code> . Другим принципом функционального программирования является всегда декларировать ваши зависимости явно. Это означает, что если функция зависит от переменной или объекта, присутствующего, то передайте эту переменную или объект непосредственно в функцию в качестве аргумента. Из этого принципа есть несколько хороших последствий. Функция легче протестировать, вы точно знаете, какой вклад она принимает, и она не будет зависеть от чего-либо еще в вашей программе. Это может дать вам больше уверенности при изменении, удалении или добавлении нового кода. Вы знаете, что можете или не можете изменить, и вы можете увидеть, где находятся потенциальные ловушки. Наконец, функция всегда будет выводить один и тот же вывод для одного и того же набора входов, независимо от того, какая часть кода выполняет его. </section>
## Instructions
<section id="instructions"> Давайте обновим функцию <code>incrementer</code> чтобы четко определить ее зависимости. Напишите функцию <code>incrementer</code> чтобы она приняла аргумент, а затем увеличила значение на единицу. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Ваш <code>incrementer</code> функции не должен изменять значение <code>fixedValue</code> .
testString: 'assert(fixedValue === 4, "Your function <code>incrementer</code> should not change the value of <code>fixedValue</code>.");'
- text: Ваша <code>incrementer</code> функция должна принимать параметр.
testString: 'assert(code.match(/function\s+?incrementer\s*?\(.+?\)/g), "Your <code>incrementer</code> function should take a parameter.");'
- text: 'Функция <code>incrementer</code> должна возвращать значение, которое больше значения <code>fixedValue</code> .'
testString: 'assert(newValue === 5, "Your <code>incrementer</code> function should return a value that is one larger than the <code>fixedValue</code> value.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// the global variable
var fixedValue = 4;
// Add your code below this line
function incrementer () {
// Add your code above this line
}
var newValue = incrementer(fixedValue); // Should equal 5
console.log(fixedValue); // Should print 4
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>