Add(1)(2)(3)

add(1)(2)(3)(4)输出结果为 10

add(1)(2)(3)输出结果为 6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function add() {
	const _args = [...arguments];
	function fn() {
		_args.push(...arguments);
		return fn;
	}
	fn.valueOf = function() {
		return _args.reduce((sum, cur) => sum + cur);
	}
	return fn;
}
add(1)(2)(3)(4).valueOf();
add(1)(1,2,3)(2).valueOf();

另一种思路也可,但是不够灵活: const add = x => y => z => w => x + y + z + w;