我试图了解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;
它没有输出。但是为什么呢?
我要对此进行澄清。为什么和为什么不。另外,请推荐一本关于函数式编程的核心概念或任何类型的文章/视频教程的好书。
谢谢!
答案 0 :(得分:0)
它不符合您的想法,因为函数outer
不带任何参数,但是返回一个带参数name
的匿名函数。如果您使用第二个示例:
var a = outer("khoyer");
然后,将字符串"khoyer"
分配给名为args
的数组。该数组将包含字符串,但是该字符串不会传递给内部函数,因为该函数带有参数,并且由于您的代码未告知参数,因此不会读取参数。
简而言之,由于arguments
和parameters
之间的差异,您需要先创建一个包含高阶函数的变量。
有关更多信息: