Если вы знаете какой-либо язык программирования, вам знакомы «функции». Функции облегчают вашу работу и помогают реализовать принцип СУХОЙ (не повторяйтесь), который делает ваш код более чистым и понятным. Поведение функций и варианты использования характерны почти для всех языков, но в JavaScript функции могут делать немного больше, чем функции в других языках. Я имел в виду, что обычно в других языках функция может принимать и возвращать числа, строки, массивы, объекты, логические значения и многие другие типы данных. JavaScript также способен на это, но JavaScript также может принимать и возвращать функцию, на что другие языки не способны. А функции, написанные для приема или возврата любой другой функции, просто называются Функции высшего порядка. Это так просто. Я предполагаю, что вы уже поняли, что мы называем функцией высшего порядка, так что давайте укрепим наше понимание несколькими примерами.

Пример 1:

function serveDrinks(age) {
  if (age <= 5) {
    return "Milk"
  } else if (age > 5 && age <= 17) {
    return "Juice"
  } else if (age >= 18 && age <= 20) {
    return "Beer"
  } else if (age >= 21) {
    return "Wisky"
  }
}
function party(age = 0, serveDrinks) {
  return serveDrinks(age)
}
const age = 28
console.log(party(age, serveDrinks))

Здесь, в приведенном выше примере, есть две функции: «checkAge», которая возвращает напиток, подходящий для определенного возраста, и «party», которая использует эту функцию «checkAge», чтобы вернуть окончательный напиток в качестве вывода. Здесь функция «party» — это «функция высшего порядка», которая принимает функции «возраст» и «serveDrinks» и возвращает результат.

Пример 2:

function composeMsg(name) {
  console.log(`My name is ${name}`)
}
function sayName(time, name, composeMsg) {
  return setTimeout(() => {
    composeMsg(name)
  }, time)
}
const name = "Avinash"
const time = 3000
sayName(time, name, composeMsg)

Выше есть две функции composeMsg и sayName, и мы хотим выполнить функцию composeMsg через заданное время, поэтому мы также можем использовать метод setTimeout для этого вместе с функцией sayName. Здесь sayName — это Функция высшего порядка.

Вот и все. Это все, что такое «функция высшего порядка». Надеюсь, теперь вы понимаете «Функции высшего порядка». Не стесняйтесь комментировать в случае любого вопроса, я буду рад помочь.

И "Подпишитесь", чтобы узнать больше о JavaScript.