函数柯里化相信大家也都有一定的了解,关于其面试题我发现网上的很多文章都是使用隐式转换的方式来获取到最后的结果。
嗯···
下面是自己实际敲出来的代码:
let add = function(...args) {
let cacheArgs = [].concat(args);
let fn = function(...args1) {
cacheArgs = cacheArgs.concat(args1);
return fn;
}
fn.toString = () => {
return cacheArgs.reduce((total, item) => item + total, 0);
}
return fn;
};
add(1)(2)(3) // 执行完后什么都没触发就结束了
console.log(add(1)(2)(3)); // console了函数fn的结构 fn() {···}
console.log(+add(1)(2)(3)); // console了6
会发现只有第三种方法才能得到我们想要的结果,因为只有第三种方式才能触发隐式转换。
关于这种结果,大家见仁见智吧。