函数add可以实现连续的加法运算函数add语法如下add(num1)(num2)(num3)...;//注意这里是省略号哟,无限使用举例如下:add(10)(10)=20;add(10)(20)(50)=80;add(10)(20)(50)(100)=180;请用js代码实现函数add。function add(num){
var sum=num,
tmp=function(v){
sum+=v; return tmp
};
tmp.toString=function(){
return sum
};
return tmp
}
console.log( add(10)(20)(50) ) //80这个tmp又返回tmp是什么操作,这就是传说中的偏函数吗?还有toString的调用?
2 回答
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
console.log( add(10)(20)(50) )
之后代码运行的过程是:
1.首先执行add(10),初始化add函数内部sum为10,
return tmp=function(v){ 10+=v; return tmp };
2.其后执行tmp(20)即:
return tmp=function(20){ 10+=20; return tmp };
3.其后执行tmp(50)
return tmp=function(50){ 30+=50; return tmp };
4.其后输出时会执行一个类型转换函数即被重写的:
tmp.toString=function(){ return sum };
5.输出tmp函数以及即内容即此时的sum:80
添加回答
举报
0/150
提交
取消