Загрузка…
JavaScript · middle · сложность 5
Чистая функция:
// чистая function add(a, b) { return a + b; } // нечистая: зависит от внешнего состояния let tax = 0.2; function priceWithTax(amount) { return amount * (1 + tax); // результат меняется, если изменится tax } // нечистая: побочный эффект function saveUser(user) { localStorage.setItem("user", JSON.stringify(user)); // эффект return user; }
Мутация аргумента тоже делает функцию нечистой с точки зрения предсказуемости:
function pushBad(arr, x) { arr.push(x); // мутирует вход return arr; }
Свяжите с тестируемостью, мемоизацией и Redux/reducer: reducer должен быть чистым. Упомяните, что I/O по природе нечист, но «ядро» логики часто держат чистым.