# 累加函数
# toString
- console.log 会默认 toString
function f() {}
f.toString = function() {
return 8888
}
console.log(f) // 8888
1
2
3
4
5
2
3
4
5
function f() {
return f
}
f.toString = function() {
return 8888
}
console.log(f()) // 8888
1
2
3
4
5
6
7
2
3
4
5
6
7
# 实现 a(1)(2)(3)
function add(a) {
function sum(b) {
a = b ? a + b : a
return sum
}
sum.toString = function() {
return a
}
return sum
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 实现多参数累加
function add(a) {
let args = [...arguments]
function sum(b) {
args.push(...arguments)
return sum
}
sum.toString = function() {
return args.reduce((a, b) => a + b)
}
return sum
}
console.log(add(1)(2))
console.log(add(1, 5)(2))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14