对javascript中的高阶函数感到困惑

时间:2018-11-03 06:57:16

标签: javascript functional-programming higher-order-functions

我试图了解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 :(得分:0)

它不符合您的想法,因为函数outer不带任何参数,但是返回一个带参数name的匿名函数。如果您使用第二个示例:

var a = outer("khoyer");

然后,将字符串"khoyer"分配给名为args的数组。该数组将包含字符串,但是该字符串不会传递给内部函数,因为该函数带有参数,并且由于您的代码未告知参数,因此不会读取参数。

简而言之,由于argumentsparameters之间的差异,您需要先创建一个包含高阶函数的变量。

有关更多信息:

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