@Urukhayy

Какой из вариантов правильнее для функционального программирования JS?

Какой из вариантов правильнее для функционального программирования JavaScript?

Вариант 1.

function formatData(array, callBack) {
    let formatted = array.map(/*   formatting  */)
    callBack(formatted)
}

formatData(peoples, (result) => {
console.log(result)
})


Вариант 2.

function formatData(array) {
   return array.map(/*   formatting  */)
}


console.log(formatData(peoples))
  • Вопрос задан
  • 327 просмотров
Решения вопроса 1
pm_wanderer
@pm_wanderer
junior-HTML
Чтобы увидеть преимущества функционального подхода, лучше написать пример немного другим образом. Сейчас у Вас в общем ничего функционального там и нет (наличие функций !== ФП):

function formatter(item) {
    return "0" + item.toString();
}

function validator(number) {
    if (typeof number !== "number") {
        throw new Error("invalid argument: Number expected");
    }
    return number;
}

function formatData(array, formatter, validator) {
    return array.map(item => formatter(validator(item)));
}

alert(formatData([1, 2, 3], formatter, validator));


PS: можно заморочиться и спроектировать более универсальные функции, но в качестве примера и так сойдет)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@abberati
frontend-разработчик
Ближе всего к ФП будет третий вариант:

function formatData(element) {
  return formattedElement;
}

const formattedData = peoples.map(formatData);
console.log(formattedData)
Ответ написан
Комментировать
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
Второй вариант. Он называется интересным словом Каррирование. И выглядит красиво и кода меньше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы