Я следую этому руководству, чтобы начать обучение функционального программирования ж/Javascript: https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-1-1f15e387e536#.iynj38h83Функционального программирования Чистота Требование к функциям хэширования
Он определяет Чистую функцию:
- Работает только на входных параметрах
- Полезные чистые функции принимают по крайней мере один параметр
- Полезные Чистые функции должны возвращать что-то
- Чистые функции не могут измениться внешние переменные/Отсутствие побочных эффектов
- Чистые функции всегда будут производить тот же результат, не учитывая тот же вход
Следующая функция нарушает договор:
function notPure(data) {
let ts = new Date();
return md5(data + ts);
}
Но следующий было бы чисто:
function pureFunction(data, ts) {
return md5(data + ts);
}
Предполагая, что я правильно понимаю, в чем смысл? Я молод в этой части поля. Я еще не понимаю, как это полезно. Включает ли временная метка внутри функции функцию с сохранением состояния и нарушением чистоты?
В чем преимущество форсирования этих значений в другом месте и передается в чистую функцию в качестве параметра?
hmm откуда вы пришли, что первая версия не чиста?выглядит чисто для меня :) – niceman
@niceman его совсем не чисто, дает разные результаты на тех же входах –
@JaredSmith ahhh Я вижу, 'new Date()' get is текущая дата, моя ошибка – niceman