用js 實現一個無限極累加的函式, 形如:
add(1) //=> 1;
add(1)(2) //=> 2;
add(1)(2)(3) //=> 6;
add(1)(2)(3)(4) //=> 10;
以此類推...
- 我們要了解一個知識點: 當我們直接對函式使用
alert()
或console.log()
時,函式的toString()
方法會被呼叫。
function s(a) {
return a+1
}
console.log(s)
// undefined
複製程式碼
- 我們現在對函式s重寫TOString。
function s(a) {
return a+1
}
s.toString = function() {
return 1
}
console.log(s)
// f 1
typeof(s)
// "function"
複製程式碼
- 我們現在將函式s包裹起來,返回一個函式,此時形成了一個閉包。
function add(a) {
function s(a) {
return a+1
}
s.toString = function() {
return a
}
return s
}
console.log(add(2)) // f 2
複製程式碼
- 稍作修改
function add(a) {
function s(b) {
a = a + b
return s
}
s.toString = function() {
return a
}
return s
}
console.log(add(1)(2)(3)(4)) // f 10
複製程式碼
收工~