JavaScript может возвращать функции?? ЧТО?

тлдр; Да, оно может

Пс. Это серия для решения плюс концепции для 30 дней JS LeetCode, и это 1/30, я добавлю ссылку на проблему в конце.

Функции в JavaScript также можно рассматривать как объекты или, как следует из терминологии JS.

Граждане первого класса

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

Закрытие

кроме того, вы наверняка заметили еще один кусок кода в решении

return function(...args) {
        return "Hello World"
    }

здесь, когда мы возвращаем функцию, и у нее нет имени!

ЧТО ЗА ФУНКЦИЯ БЕЗ ИМЕНИ??
A. Да, у вас могут быть функции без имени, но в определенных условиях, таких как IIFE или замыкания, а также в некоторых других местах, и такие функции в терминологии JS называются анонимными функциями.

И, следовательно, объединив концепцию Анонимной функции и Гражданина первого порядка, мы можем определить функцию в переменной, как мы это сделали в нашем коде.

var createHelloWorld = function() {}

И еще один второстепенный момент, но он может оказать большое влияние на решение проблем и понимание JS. Это оператор распространения (…), который был представлен фондом ECMAScript в версии JS ES6.

здесь в коде, когда мы возвращаем анонимную функцию, мы закодировали ее как

function(...args)

позже можно увидеть, что он преобразуется в массив, где вы можете получить доступ к N количеству переменных
Ex

function x(...args){
    console.log(args)
}
x("s","s","sss");
// this outputs ["s","s","sss"]

Код

/**
 * @return {Function}
 */
var createHelloWorld = function() {
    return function(...args) {
        return "Hello World"
    }
};
/**
 * const f = createHelloWorld();
 * f(); // "Hello World"
 */

Заключение

Итак, вы видите, как много всего происходит в вашей странной функции, которая возвращает функцию, и именно так JS делает возможным использование нескольких концепций, которые мы использовали выше, каждая отдельная строка JS является новым открытием сама по себе 😂 но как Прошло 30 дней. Я постараюсь написать больше таких постов, разбивая код построчно и концепт за концептом!

Счастливых 30 дней JavaScript!

Проблема — https://leetcode.com/problems/create-hello-world-function/description/