正在使用';新功能';在javascript中作为内部函数(闭包内)被认为是一种不好的做法?
当我读到curry函数时,我认为很难创建用于构建嵌套函数的递归。然后我看一下的实现,它是 如果要创建具有任意数量参数的curried函数,则为true。那么, 为什么不使用如下字符串构建它:正在使用';新功能';在javascript中作为内部函数(闭包内)被认为是一种不好的做法?,javascript,function,Javascript,Function,当我读到curry函数时,我认为很难创建用于构建嵌套函数的递归。然后我看一下的实现,它是 如果要创建具有任意数量参数的curried函数,则为true。那么, 为什么不使用如下字符串构建它: function curry(fn, arity) { arity = typeof arity === 'undefined' ? fn.length : arity if (arity < 1) { return fn } function build(n, space
function curry(fn, arity) {
arity = typeof arity === 'undefined' ? fn.length : arity
if (arity < 1) {
return fn
}
function build(n, space = 2, args = []) {
if (n < 1) {
args = args.map(arg => 'a' + arg)
return `fn(${args.join(', ')})`
} else {
return `function (a${n}) {\n${' '.repeat(space)}` +
`return ${build(n - 1, space + 2, args.concat(n))}\n` +
`${' '.repeat(space - 2)}}`
}
}
const curryCreator = new Function('fn', 'return ' + build(arity))
return curryCreator(fn)
}
function sum5(a, b, c, d, e) {
return a + b + c + d + e
}
const sum = curry(sum5)
这将产生:
function (a5) {
return function (a4) {
return function (a3) {
return function (a2) {
return function (a1) {
return fn(a5, a4, a3, a2, a1)
}
}
}
}
}
为该功能使用新功能
有多糟糕
用例只是生成一个函数和参数占位符,如
在上面的例子中。我的问题比哪个更具体
介绍eval
或新功能的通用用例。如你所见
在我的示例中,它是一个私有函数,不会在其他函数中调用
地点。可能重复@Nit I更新了问题。