【发布时间】:2020-06-21 15:21:45
【问题描述】:
我想通过 codewars -https://www.codewars.com/kata/53cf7e37e9876c35a60002c9/train/javascript 的测验,但我无法避免通过错误:“TypeError: add(...) is not a function”
function curryPartial(){
let args= [...arguments]
let fn = args[0]
console.log(fn.length)
function cur(){
let argsCur= [...arguments]
return curryPartial(...args,...argsCur)
}
cur.valueOf = ()=>{
//return args.reduce((a,b)=>a+b)
// console.log(...args)
// const res = +fn(...args.slice(1))
// return res
}
return cur
}
function add(a, b, c) {
return a + b + c;
}
console.log(+curryPartial(add(1,2)(3)))
如何避免此错误以通过测验?
【问题讨论】:
-
您想在
add(1,2)(3)中做什么?正如现在所写的那样,解析器期望add(1, 2)返回一个函数,因此您可以使用参数3调用它。但它返回一个数字。由于add函数需要 3 个参数,我假设您希望3成为add函数的第三个参数。如果是这样,您必须将其写为add(1, 2, 3) -
All these examples should produce the same result: curryPartial(add)(1)(2)(3); //6 curryPartial(add, 1)(2)(3); //6 curryPartial(add, 1)(2, 3); //6 -
curryPartial()本身返回一个函数,所以可以调用返回值。但add函数只返回一个数字。您希望如何将其作为函数调用?
标签: javascript function