请实现test2函数满足以下四个条件使其通过测试,以最简洁的方式完成,并保证代码质量
module.exports.test2 = (input) => {
}
(1)test2() === 0
(2)test2(1)() === 1
(3)test2(1)(2)(3)(4)() === 10
(4)const t2 = test2(1)(2); t2(3)() === 6; t2(4)() === 7
我写了一个函数,但是只能满足前三个条件,求大神赐教,怎么同时满足这四个条件,不知道咋写。
请实现test2函数满足以下四个条件使其通过测试,以最简洁的方式完成,并保证代码质量
module.exports.test2 = (input) => {
}
(1)test2() === 0
(2)test2(1)() === 1
(3)test2(1)(2)(3)(4)() === 10
(4)const t2 = test2(1)(2); t2(3)() === 6; t2(4)() === 7
我写了一个函数,但是只能满足前三个条件,求大神赐教,怎么同时满足这四个条件,不知道咋写。
function test2 (...args) {
if (args.length === 0) {
return 0
}
return function (num) {
if (typeof num === 'number') {
return test2(...args, num)
} else {
return args.reduce((sum, current) => sum + current)
}
}
}
难点如何存储之前的参数,可以使用包裹一层函数的方式来存储,代码如下:
const test2 = (function create (...args) {
return function compute (v) {
if (v === undefined) {
return args.reduce((r, v) => r += v, 0)
}
return create(...args, v)
}
})()
var add = function() {
var _this = this,
_args = arguments
return function() {
if (!arguments.length) {
var sum = 0;
for (var i = 0,c; c = _args[i++];) sum += c
return sum
} else {
Array.prototype.push.apply(_args, arguments)
return arguments.callee
}
}
}
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
题目已经给出了函数的签名,那么答案是不应该擅自改动的。