你好,我正在做一个javascript编码面试,为即将到来的面试做准备。我有一个问题把我弄糊涂了。问题如下:
下面说明了什么概念?
function makeAdder(x) {
return function (y) {
return x + y;
};
}
var addFive = makeAdder(5);
console.log(addFive(3));
有4个答案可供选择,然后有:局部套用,
关闭我认为这两个都是对的。我最后选择了咖喱,但我真的认为这也说明了闭包?你能解释一下为什么这不能说明闭包吗?
套用总是闭包的语法糖。它不调用函数。它只是变换它
对于上面的例子,它只是闭包,因为你使用了另一个变量来存储内部函数并以不同的方式执行。与addFive类似,它是稍后调用的内部函数。
如果你想curry,就像下面我创建的例子。柯里化是闭包的概念,因为它的前面的exection大括号可以帮助内部函数同时执行。因此,在这里,您不必使用另一个变量来存储调用内部函数。
根据定义,套用应该将sum(a, b, c)转换为sum(a)(b)(c)。
function makeAdder(x) {
return function (y) {
return x + y;
};
}
console.log(makeAdder(5)(3));