【发布时间】:2021-10-28 09:15:49
【问题描述】:
你好,我正在做一个 javascript 编码面试,为即将到来的面试做准备。 我有一个问题让我有点困惑。问题如下:
下面说明了什么概念?
function makeAdder(x) {
return function (y) {
return x + y;
};
}
var addFive = makeAdder(5);
console.log(addFive(3));
有 4 个答案可供选择,然后是: 咖喱和 关闭
我认为这两个都是对的。我最终选择了咖喱,但我真的认为这也说明了闭包?你能解释一下为什么这没有说明闭包吗?
【问题讨论】:
-
“你能解释一下为什么这没有说明闭包吗?” - 它也与闭包有关。
makeAdder函数返回的函数在参数x之上有一个闭包。 -
这应该是
currying和closure... -
同样的例子用于解释文档中的闭包:developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
-
@decpk 我同意,但显然唯一正确的答案是柯里化:github.com/Ebazhanov/linkedin-skill-assessments-quizzes/blob/…
-
为了安全起见,我会选择“关闭”。当然,
makeAdder是+的curried 版本,但对于实际的“currying”,我希望看到makeAdder = curry((x, y) => x+y)。
标签: javascript closures currying