100 вопросов на собеседование по JavaScript. С подробными объяснениями. Ирина Кириченко
Чтение книги онлайн.

Читать онлайн книгу 100 вопросов на собеседование по JavaScript. С подробными объяснениями - Ирина Кириченко страница 3

СКАЧАТЬ синхронного кода. Это позволяет асинхронному коду выполняться после завершения синхронных операций, не блокируя основной поток выполнения.

      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

      15. Что такое RESTful API? Какие HTTP методы обычно используются для взаимодействия с RESTful API?

      RESTful СКАЧАТЬ