首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Currying或closure

Currying或closure
EN

Stack Overflow用户
提问于 2021-10-28 09:15:49
回答 1查看 73关注 0票数 1

你好,我正在做一个javascript编码面试,为即将到来的面试做准备。我有一个问题让我有点困惑。问题如下:

下面说明的是什么概念?

代码语言:javascript
复制
function makeAdder(x) {
  return function (y) {
    return x + y;
  };
}

var addFive = makeAdder(5);
console.log(addFive(3));

有4个答案可供选择,然后是: Currying和闭包

我认为这两个都是对的。我最终选择了currying,但我真的认为这也是对闭包的说明?你能解释一下为什么这不能说明闭包吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-28 09:27:20

call始终是一种语法糖,closures.It不调用函数。它只是改变了它。

对于上面的例子,它只是闭包,因为你接受了另一个变量,这个变量存储内部函数,并以不同的方式执行。与addFive类似,它是内部函数,稍后将被调用。

如果你想修改它,就像我创建的下面这个例子。Currying是闭包的概念,因为它的前导执行花括号有助于同时执行内部函数。所以在这里你不需要存储另一个变量来调用内部函数。

根据定义,currying应将sum(a,b,c)转换为sum(a)(b)(c)。

代码语言:javascript
复制
function makeAdder(x) {
  return function (y) {
    return x + y;
  };
}


console.log(makeAdder(5)(3));

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69751347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档