// test("chen", 45, 789, 284.2, 178) ==> test2("chen")(45)(789)(284.2)(178)()
// (name, id, num, score, height)
//柯里化
function test(name) {
return id => {
return num => {
return score => {
return height => {
console.log(
`name:${name},id:${id},num:${num},score:${score},height:${height}`
)
}
}
}
}
}
//柯里化 调用
test('柯里化')(1)(999)('local')(180)
//柯里化封装
function currying(fn) {
let args = []
return function() {
//生成新的方法
if (fn.arguments === 0) {
//没有参数时执行
fn.call(this, args)
} else {
//修改数组的push 绑定到args 上面,参数传入call arguments 的 数组
Array.prototype.push.call(args, [].splice().call(arguments))
// 返回argument.callee
return arguments.callee
}
}
}