javascript - js柯里化的问题
黄舟
黄舟 2017-04-11 11:50:36
0
4
346

我们都知道js柯里化如何实现,但是最终实现的效果一般是酱紫的:

sum(1)(2)(3)(4)()

但是后面多了一个()总是很不爽,也有不带()的实现,不过参数个数是确定的,所以,我想问:

console.log(sum(1)(2)(3))

这种直接输出6的怎么实现?注意参数可能更多也可能更少0.0

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复 (4)
小葫芦

问道js题目 编写add函数 然后 add(1)(2)(3)(4) 输出10 再考虑拓展性

    洪涛

    你想sum(1)(2)(3)直接返回6,这不难实现。
    然后你又想sum(1)(2)(3)(4)返回的是10,那就不行了。
    因为你前面三次调用已经返回6了,然后你的代码就是6(4)了,这显然不行。


    所以必须有个地方做区分,要不就像第一种一样以不传参的方式取得结果,要不就只能固定次数了。

      阿神

      好人说得对,有一些实现,通过修改toString或者valueOf方法使结果返回数字的,其实返回的还是一个function。

        刘奇
        function sum(x, y) { if (typeof y !== 'undefined') { return sum.apply(null, [x + y].concat([].slice.call(arguments, 2))); } else { var fn = function() { return sum.apply(null, [x].concat([].slice.call(arguments))); }; fn.toString = function() { return x; }; return fn; } } sum(1, 2, 3, 4, 5) sum(1)(2)(3)(4)(5) sum(1, 2)(3)(4, 5) sum(1,2)(3, 4, 5) sum(1, 2, 3, 4)(5)

        输出结果都是15

          最新下载
          更多>
          网站特效
          网站源码
          网站素材
          前端模板
          关于我们 免责声明 Sitemap
          PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!