正在使用';新功能';在javascript中作为内部函数(闭包内)被认为是一种不好的做法?

正在使用';新功能';在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

当我读到curry函数时,我认为很难创建用于构建嵌套函数的递归。然后我看一下的实现,它是 如果要创建具有任意数量参数的curried函数,则为true。那么, 为什么不使用如下字符串构建它:

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更新了问题。