问题描述
实现函数 functionFunction,调用之后满足如下条件:
- 返回值为一个函数 f
- 调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ', ’
- 所有函数的参数数量为 1,且均为 String 类型
问题来源:牛客网
解决方案
本题主要考察函数柯里化,实际上是要求将一个字符串拼接函数进行柯里化。
function functionFunction(str) {
// 字符串拼接函数
function strAdd() {
return Array.prototype.join.call(arguments, ', ')
}
// 柯里化工具函数,argLength为目标函数的参数的长度
function curry(fn, argLength) {
return function curried(...args) {
if (args.length >= argLength) {
return fn.apply(this, args)
} else {
return function(...args2) {
return curried.apply(this, args.concat(args2))
}
}
}
}
// 将字符串函数柯里化,目标参数长度为2(也可以是其他长度)
// 并进行初次调用
return curry(strAdd, 2)(str)
}