Rak*_*yal 8 javascript function
最近我看到了这段JavaScript代码,但一直无法理解它想要做什么.
var f = function(a) {
return function() {
alert(a());
};
};
f(function() { return "Hello World"; })();
Run Code Online (Sandbox Code Playgroud)
请解释一下这完成了什么!
它执行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
Run Code Online (Sandbox Code Playgroud)
它只是一个更高级别的功能,在这种情况下并不是必需的.
f是一个函数,它接受另一个函数(被调用a),并返回一个新生成的函数,该函数将评估a并弹出一个显示结果的警告框.
所以底线调用f(传入一个打印"Hello World"的匿名函数),然后立即调用返回的匿名函数f- 这将评估传入的参数(你可以看到返回"Hello World")然后弹出警报框.
发布的代码在功能上等同于
alert("Hello World");
Run Code Online (Sandbox Code Playgroud)
但是有两个额外的元素使它更复杂:
但由于这些好处都没有在代码片段中实际使用,我可以看出为什么你会感到困惑.