看見了一個面試題颓鲜,用 JS 實現(xiàn)一個無限累加的函數 add表窘,示例如下:
sum(1).valueOf(); // 1
sum(1)(2).valueOf(); // 3
sum(1)(2)(3).valueOf()典予; // 6
sum(1)(2)(3)(4).valueOf(); // 10
// 以此類推
具體的代碼實現(xiàn)
function sum (...args) {
const f = (...rest) => sum(...args, ...rest)
f.valueOf = () => args.reduce((x, y) => x + y, 0)
return f
}
sum(1).valueOf(); // 1
sum(1)(2).valueOf(); // 3
sum(1)(2)(3).valueOf(); // 6
sum(1)(2)(3)(4).valueOf(); // 10
這是函數柯里化的應用乐严,是一個比較高級的概念瘤袖,目前我還只是認識的階段,相信隨著經驗的累計會更深入的了解吧