为了账号安全,请及时绑定邮箱和手机立即绑定

js一道题目,大家进来瞅一瞅

js一道题目,大家进来瞅一瞅

BIG阳 2018-08-18 16:43:33
函数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


查看完整回答
反对 回复 2018-08-19
?
森林海

TA贡献2011条经验 获得超2个赞

调用函数返回函数 就可以一直()下去了 因为返回的是函数 所以是打印不出数字的 修改toString 使得打印数字

查看完整回答
反对 回复 2018-08-19
  • 2 回答
  • 0 关注
  • 661 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信