Читать книгу 100 вопросов на собеседование по JavaScript. С подробными объяснениями - - Страница 16

JavaScript: Ответы на вопросы
14. Какие основные принципы функционального программирования можно использовать в JavaScript?

Оглавление

Принципы функционального программирования в JavaScript включают использование функций высшего порядка, чистых функций, неизменяемости данных и функций map, filter и reduce для обработки данных. Эти концепции помогают создавать более чистый, модульный и легко поддерживаемый код.

Рассмотрим каждый из этих принципов более детально:

1)      Функции первого класса (First-Class Functions). В JavaScript функции являются объектами первого класса, что означает, что их можно присваивать переменным, передавать как аргументы, возвращать из других функций.

const greet = function (name) {

return `Hello, ${name}!`;

};

const sayHello = greet;

console.log(sayHello("John")); // Output: Hello, John!

2)      Чистые функции (Pure Functions). Чистая функция возвращает результат, основываясь только на своих аргументах, не имеет побочных эффектов и не зависит от глобального состояния.

function add(a, b) {

return a + b;

}

console.log(add(2, 3)); // Output: 5

3)      Неизменяемость (Immutability). Изменение состояния может привести к ошибкам и сложностям в отладке. В функциональном программировании ценится неизменяемость данных, и вместо изменения существующих данных создаются новые.

const numbers = [1, 2, 3];

const newNumbers = […numbers, 4]; // создание нового массива с добавлением элемента

console.log(newNumbers); // Output: [1, 2, 3, 4]

4)      Функции высшего порядка (Higher-Order Functions). Это функции, которые принимают другие функции в качестве аргументов или возвращают их. Они позволяют абстрагировать операции и создавать более гибкий и читаемый код.

const multiplyBy = function (factor) {

return function (number) {

return number * factor;

};

};

const double = multiplyBy(2);

console.log(double(5)); // Output: 10

5)      Рекурсия. Вместо циклов используется рекурсия для выполнения повторяющихся задач. Рекурсивные функции вызывают сами себя с изменяющимися аргументами.

function factorial(n) {

return n === 0 ? 1 : n * factorial(n – 1);

}

console.log(factorial(5)); // Output: 120

6)      Функциональные комбинаторы. Это функции, которые комбинируют другие функции, чтобы создавать новые. Примеры включают map, filter, и reduce.

const square = x => x * x;

const increment = x => x + 1;

const squareAndIncrement = compose(increment, square);

console.log(squareAndIncrement(3)); // Output: 10

7)      Каррирование (Currying). Процесс преобразования функции с множеством аргументов в цепочку функций, каждая из которых принимает только один аргумент.

const square = x => x * x;

const increment = x => x + 1;

const squareAndIncrement = compose(increment, square);

console.log(squareAndIncrement(3)); // Output: 10

100 вопросов на собеседование по JavaScript. С подробными объяснениями

Подняться наверх