什么是;返回函数(){…}";你喜欢JavaScript吗?
最近我看到了这段JavaScript代码,但一直无法理解它试图做什么什么是;返回函数(){…}";你喜欢JavaScript吗?,javascript,function,Javascript,Function,最近我看到了这段JavaScript代码,但一直无法理解它试图做什么 var f = function(a) { return function() { alert(a()); }; }; f(function() { return "Hello World"; })(); 请解释一下这能实现什么 获取警报框以显示“Hello world”是一种非常复杂的方法。函数是javascript中的第一类项,可以作为参数传递给其他函数或从其他函数传递。它执行f返回的函
var f = function(a) {
return function() {
alert(a());
};
};
f(function() { return "Hello World"; })();
请解释一下这能实现什么 获取警报框以显示“Hello world”是一种非常复杂的方法。函数是javascript中的第一类项,可以作为参数传递给其他函数或从其他函数传递。它执行f返回的函数。
f返回一个函数,该函数调用一个警报,该警报显示作为参数提供给f的函数的输出 编辑: 只需更换一些部件,使其更容易在眼睛上看到,您就会看到自己:
var f = function(a) {
var output = a();
var alertCaller = function() {
alert(output);
};
return alertCaller;
};
var helloWorld = function() { return "Hello World"; }
var result = f(helloWorld); //f takes a function as argument
result(); //result must be a function
此代码创建一个函数生成器。第一个函数(其引用存储在
f
)接受对另一个函数(a
)的引用。然后f
创建一个关闭参数a
的函数,并返回对新函数的引用,该引用将提醒a的
调用结果的返回值
最后,使用内联函数调用此mess,并立即调用其结果(末尾带有左括号和右括号)。它只是一个更高级别的函数,在这种情况下并不需要
f
是一个函数,它接受另一个函数(称为a
),并返回一个新生成的函数,该函数将计算a
,并弹出一个显示结果的警报框
因此,底线调用f(传入一个打印“Hello World”的匿名函数),然后立即计算由f
返回的匿名函数,该函数将计算传入的参数(您可以看到该参数返回“Hello World”),然后弹出一个警报框
发布的代码在功能上等同于
alert("Hello World");
但有两个额外的因素使它更复杂:
但是,由于这两个优点实际上都没有在代码片段中使用,我可以理解为什么您会感到困惑。
f
被分配了一个函数,该函数将函数作为其参数,调用它,并在警报中显示其返回值。然后用一个函数调用f
,该函数在调用时返回字符串“Hello World”
,导致Hello World
显示在警报中。downvote:D,因为它不像我想的那么难?upvote-因为一阶函数,尤其是调用从函数调用返回的函数(例如,f()()
)看起来确实令人困惑,直到你“理解”它。祝贺你,Rakesh Juyal!你刚刚偶然发现了函数式编程!我为你感到高兴sobmox,也许你是对的,但请你解释一下。F是一个函数,它接受一个函数(比如说arg1),并返回一个函数,该函数将显示函数arg1返回的值?这是正确的吗?