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

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

14 ноября 2022 г.

Всем привет! Сегодня я собираюсь обсудить очень известную концепцию программирования (первоклассные функции). На эту тему уже есть так много ресурсов, но из этой статьи еще можно извлечь что-то новое, и я нашел время, чтобы упростить вещи для лучшего понимания.

Почему это важно для меня как для разработчика?

  • Это поможет вам лучше понять функции обратного вызова Javascript, когда вы увидите их использование.
  • Это поможет вам узнать, как работает ваш код.
  • Это поможет вам лучше понять, почему Javascript рассматривает функции как значения.

Что такое функция первого класса?

Согласно Википедии, считается, что язык программирования имеет первоклассные функции, если он рассматривает функции как граждане первого класса.

Это означает, что язык поддерживает передачу функций в качестве аргументов другим функциям, возврат их в виде значений из разных функций, присвоение их переменным или сохранение в структурах данных.

В Javascript все работает именно так, потому что функция — это просто еще один тип объекта. Если вы новичок в этой концепции, вы почувствуете, что это довольно неловко, особенно если вы пришли из другого опыта программирования, но пока подумайте об этом. Поскольку объекты являются значениями, функции тоже, и Javascript рассматривает их как одно целое. Это открывает новый способ написания более гибкого кода, поскольку мы можем хранить функции в переменной или добавлять свойства.

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

* Функционирует как аргумент * Функции, возвращающие функции * Функции как значения

Функции как аргумент

С первоклассной функцией стало возможным передавать функцию в качестве аргумента; мы можем видеть этот стиль кода во многих кодах Javascript. Например. метод addEventListener, который получает функцию обратного вызова Javascript в качестве аргумента, например,

button.addEventListener(click, function(){
  console.log(hellloooo)
})

n В предыдущем фрагменте кода мы видим, что addEventListener получает два аргумента, где вторая функция является функцией обратного вызова и будет вызываться после нажатия кнопки.

Функции, возвращающие функции

Мы можем возвращать функции из другой функции в Javascript; многие объекты в Javascript имеют методы, например, функции массива в javascript. Кроме того, у нас есть метод функции, например, методы Javascript call(), bind(), apply() могут быть вызваны на функции Javascript.

function count(){
  Let counter = 0;
  return function(){
     counter++
   }
}

Функция count вернула другую функцию, в которой мы обновили счетчик.

Функции как значения

В Javascript мы можем хранить функцию в переменной или даже в свойстве, как если бы вы усредняли значения Javascript.

Const multiply =  (a,b) => a * b

Приведенная выше функция стрелки Javascript хранится в переменной умножения, которую можно вызвать

умножьте (3,5) таким образом.

Важность первоклассных функций в Javascript

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


Функция высшего порядка

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

button.addEventListener(click, function(){
  console.log(hellloooo)
})

n ЗдесьaddEventListener() является примером функции более высокого порядка, поскольку она получает другую функцию в качестве аргумента. Это часто относится к функции обратного вызова Javascript, потому что она была вызвана после запуска HOF. Основное различие между функциями высшего порядка и функциями первого класса заключается в том, что функция первого класса — это функция, которая есть или отсутствует в языке программирования. Это просто означает, что все функции являются значениями.

Заключение

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


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE