用js实现add(1)(2)(3)(4)=10
时间: 2023-11-19 19:04:34 浏览: 62
可以使用闭包来实现这个功能,具体代码如下:
```
function add(x) {
let sum = x;
function inner(y) {
sum += y;
return inner;
}
inner.toString = function() {
return sum;
};
return inner;
}
console.log(add(1)(2)(3)(4)); // 输出 10
```
这里定义了一个 `add` 函数,它接受一个参数 `x`,并返回一个函数 `inner`。当 `inner` 被调用时,它接受一个参数 `y`,将 `y` 加到 `sum` 上,并返回 `inner` 自身,以便可以继续调用。最后,我们重写了 `inner` 函数的 `toString` 方法,以便在输出时返回 `sum` 的值。这样,当我们连续调用 `add` 函数时,最后一次调用会返回一个函数,但是由于我们重写了 `toString` 方法,所以可以直接输出结果。
相关问题
js实现 add(1)(2)(3)()=6 add(1,2,3)(4)()=10
在 JavaScript 中,你可以使用函数的返回值来实现链式调用的效果。
你可以这样实现 add 函数:
```
function add(a) {
let sum = a;
function f(b) {
sum += b;
return f;
}
f.toString = function() { return sum };
return f;
}
```
然后你就可以这样调用 add 函数:
```
console.log(add(1)(2)(3)()); // 6
console.log(add(1, 2, 3)(4)()); // 10
```
如果你想要在最后一次调用时计算出结果,你可以在函数 f 中添加一个特殊的属性,例如 toString,然后在最后一次调用时将函数转换为字符串。
js 实现函数add,满足如下条件:add(a, b) == add(a)(b) == a+b
好的,我明白了。下面是实现函数add的JavaScript代码:
```javascript
function add(a, b) {
if (b !== undefined) {
return a + b;
} else {
return function (c) {
return a + c;
};
}
}
```
这里使用了闭包的概念,如果只传入一个参数a,则返回一个匿名函数,这个函数接收一个参数b,返回a+b。如果同时传入两个参数a和b,则直接返回a+b。这样就可以实现add(a, b) == add(a)(b) == a b。
阅读全文