CNode

关于闭包,

问答
Kkylezhang发布于10 年前最后回复10 年前4 回复4501 浏览0 收藏

要实现一个能被如下这样调用的闭包,该怎么做呢?

第一种调用:add(1); 第二种调用:add(1)(2); 第三种调用:add(1)(2)(3); 第四种调用:add(1)(2)(3)(4); 第五种调用:add(1)(2)(3)(4)(5);

查看回复

回复 (4)

C
captainblue2013#1·10 年前

function add(x) { var sum = x; var tmp = function (y) { sum = sum + y; return tmp; }; tmp.valueOf = function () { return sum; }; return tmp; }

这叫啥?柯里化吧

W
windyinwind#2·10 年前

楼上给的答案很对, 其实本质还是闭包, 函数 tmp 始终保持了对定义时 scope 的访问

G
gzhangzy#3·10 年前

niu

S
sunfeng90#4·10 年前

牛人

参与回复
登录后即可参与回复。登录