Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Функции

Все темы React Developer

Что такое функциональное программирование и какие особенности JS позволяют говорить о нем как о функциональном языке программирования?

Функциональное программирование — это парадигма программирования, основанная на использовании функций как основных строительных блоков.

Особенности функционального программирования:

  1. Чистые функции:

    • Функции, которые не имеют побочных эффектов и возвращают одинаковый результат для одинаковых аргументов.
  2. Функции высшего порядка:

    • Функции, которые могут принимать другие функции в качестве аргументов и/или возвращать их.
  3. Неизменяемость:

    • Состояние объектов не изменяется после их создания; вместо этого создаются новые объекты.
  4. Функциональные композиции:

    • Создание новых функций путем комбинирования других функций.

Особенности JavaScript как функционального языка:

  1. Поддержка функций высшего порядка:

    • Пример:

      function map(arr, func) {
          return arr.map(func);
      }
  2. Анонимные функции и функции-стрелки:

    • Пример:

      const add = (a, b) => a + b;
  3. Методы массива для функционального программирования:

    • Пример:

      const numbers = [1, 2, 3, 4];
      const doubled = numbers.map(n => n * 2);
  4. Замыкания:

    • Пример:

      function createCounter() {
          let count = 0;
          return function() {
              return ++count;
          };
      }

Что такое функции высшего порядка (Higher Order Functions)?

Функции высшего порядка — это функции, которые могут принимать другие функции в качестве аргументов и/или возвращать функции в качестве результата.

Основные характеристики:

  1. Принимают функции в качестве аргументов:

    • Пример:

      function map(array, func) {
          let result = [];
          for (let i = 0; i < array.length; i++) {
              result.push(func(array[i]));
          }
          return result;
      }
      
      let numbers = [1, 2, 3, 4];
      let doubled = map(numbers, function(n) { return n * 2; });
      console.log(doubled); // [2, 4, 6, 8]
  2. Возвращают функции в качестве результата:

    • Пример:

      function createMultiplier(multiplier) {
          return function(x) {
              return x * multiplier;
          };
      }
      
      let double = createMultiplier(2);
      console.log(double(5)); // 10
  3. Композиция функций:

    • Создание новой функции путем объединения других функций.

    • Пример:

      function compose(f, g) {
          return function(x) {
              return f(g(x));
          };
      }
      
      let addOne = x => x + 1;
      let square = x => x * x;
      
      let addOneThenSquare = compose(square, addOne);
      console.log(addOneThenSquare(2)); // 9

Функции высшего порядка — это мощный инструмент в функциональном программировании, позволяющий создавать более гибкие и абстрактные решения за счет работы с функциями как с данными.


Почему функции в JS называют объектами первого класса (First-class Objects)?

Функции в JavaScript называются объектами первого класса, потому что они обладают всеми свойствами объектов и могут быть использованы как данные.

Основные характеристики:

  1. Присваивание переменным:

    • Функции могут быть присвоены переменным.

    • Пример:

      const greet = function() {
          console.log("Hello");
      };
  2. Передача в качестве аргументов:

    • Функции могут быть переданы как аргументы другим функциям.

    • Пример:

      function callFunction(fn) {
          fn();
      }
      
      callFunction(greet); // Выведет "Hello"
  3. Возврат из других функций:

    • Функции могут быть возвращены из других функций.

    • Пример:

      function createFunction() {
          return function() {
              console.log("Hello from returned function");
          };
      }
      
      const newFunction = createFunction();
      newFunction(); // Выведет "Hello from returned function"
  4. Сохранение в структурах данных:

    • Функции могут быть сохранены в массивах и объектах.

    • Пример:

      const functions = [greet, createFunction()];
      functions[0](); // Выведет "Hello"

Функции в JavaScript называются объектами первого класса, потому что они могут быть присваиваемы переменным, передаваться в качестве аргументов, возвращаться из других функций и сохраняться в структурах данных, что делает их гибким и мощным инструментом.

Эта страница была полезной?