在javascript中我们可以调用下面提到的函数吗?如果是这样的话背后的逻辑是什么?
var pro = function(a){
...
}
pro(5)(3);
Run Code Online (Sandbox Code Playgroud)
var pro = function(a) { return function(b) { return a * b; } };
console.log(pro(5)(3)); // 15
Run Code Online (Sandbox Code Playgroud)
基本上,如果函数的返回值本身就是一个函数,那么您可以转而在同一个表达式中立即调用返回的函数; 这就是语法的含义.您还可以使用中间变量:
var times5 = pro(5);
console.log(times5(3)); // 15
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,结果与您times5直接定义的结果相同:
function times5(b) { return 5 * b; }
Run Code Online (Sandbox Code Playgroud)
函数返回功能有很多应用; 通常,将函数用作传递给其他函数的表达式中的常规值等等称为高阶编程.作为Javascript中的实际问题,在动态创建或关联网页元素与动作功能时,您通常必须这样做; 调用函数返回函数可以确保每个函数都获得自己的唯一变量,避免由于var作用域的限制而导致的重用.
在某些其他语言中,当您向函数传递的参数太少时,它会自动返回另一个函数,该函数将在传递其余参数时完成作业.这在Haskell Curry之后称为currying,并且在给出其他名称的语言中,这实际上是编写多个参数的函数的唯一方法:编写一个返回函数的函数,该函数返回一个函数...它接受最后一个参数和返回结果.
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |