一道JS小题目

下题节选自 Segfaultment 的一道 JS 面试题。

实现一个函数,运算结果可以满足如下预期结果:
add(1)(2) // 3
add(1, 2, 3)(10) // 16
add(1)(2)(3)(4)(5) // 15

根据测试用例的不同情况可知,实现这个函数的关键有以下几点:

  • 函数的链式调用,add 函数的返回值应该还是一个函数
  • add 的返回值应该能够记录前一步操作的返回值,保证在没有下一步的情况下能够正确输入上一步的返回值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function add(...value) {
// 1. 对第一步操作中的参数列表遍历求和
let sum = 0;
for (key of value) {
sum += key;
}
// 2. 定义第一步操作完成后返回的函数,返回值应该是其本身
let temp = (x) => {
sum += x;
return temp;
};
// 3. 保证输出的最后结果为求和计算后的值,而非该函数本身
temp.toString = () => sum;
return temp;
}
作者

monster1935

发布于

2017-03-29

更新于

2024-09-25

许可协议