Проблема на предыдущих постах была с
сращивание
Позвоните вtablose ()
функция. К сожалению, SPLICE изменяет исходный массив, который он вызывается, поэтому второй звонок к нему использовал модифицированный массив и дал неожиданные результаты. Это небольшой пример гораздо большего рисунка — вы вызываете функцию в переменной, массиве или объекте, и функция меняет переменную или что-то в объекте.Один из основных принципов функционального программирования — не менять вещи. Изменения приводят к ошибкам. Легче предотвратить ошибки, зная, что ваши функции ничего не меняют, включая функциональные аргументы или любая глобальная переменная.
Давайте попробуем освоить эту дисциплину и не изменять никакой переменной или объекта в нашем коде.
Давайте заполним код для функции
инкремент
так что возвращает значение глобальной переменнойFixedPalue
увеличился за другим.
var fixedValue = 4; function incrementer () { }
- Отвечать:
var fixedValue = 4; function incrementer () { return fixedValue + 1; } console.log(fixedValue); will display 4 console.log(incrementer()); will display 5;
- Функция
инкремент
не изменил значение фиксированного значения (что 4). иИнкремент
Функция должна вернуть значение, которое составляет один больше, чемFixedPalue
ценить.
Оригинал: «https://dev.to/rthefounding/avoiding-mutations-and-side-effects-using-functional-programming-3o4g»