Путать о функции высшего порядка в JavaScript - PullRequest
0 голосов
/ 03 ноября 2018

Я пытался понять функциональное программирование в javascript. Но меня смущает функция высшего порядка. Мне нужно более подробное объяснение.

Вот программа, которую я написал

var outer = function() {
    return function(name) {
        return "My name is " + name;
    }
}

var a = outer();
var b = a('khoyer');
b;

Почему я не могу писать вместо этого

var outer = function() {
    return function(name) {
        return "My name is " + name;
    }
}
var a = outer("khoyer");
a;

Показывает отсутствие вывода. но почему?

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

спасибо!

1 Ответ

0 голосов
/ 03 ноября 2018

Это не работает так, как вы думаете, потому что функция outer не принимает параметров, но возвращает анонимную функцию с одним параметром name. Если вы используете ваш второй пример:

var a = outer("khoyer");

Тогда строка "khoyer" будет присвоена массиву с именем args. Этот массив будет содержать строку, но строка не будет передана внутренней функции, потому что функция принимает параметр, и она не читает аргументы, потому что ваш код не сообщает об этом.

Короче говоря, вам нужно создать переменную, которая содержит функцию высшего порядка, прежде чем вы сможете ее вызвать, из-за различий между arguments и parameters.

Для получения дополнительной информации:

https://eloquentjavascript.net/05_higher_order.html

...