定义函数传参

定义函数sum, 参数params 个数不定,

  • 不使用 es6
  • 不使用 eval
  • 不使用call,apply,bind

有没有其他办法实现

const params = ["aa", "ff","22",2,4,...]
const sum = new Function('a', 'b',...params 'return a + b');
阅读 2.1k
3 个回答

我理解是说在 new Function 的时候不定参数个数?
那直接用 arguments 应该可以吧

const sum = new Function('var rtn = 0;var i = 0;while (i < arguments.length) {rtn += arguments[i];i++;}return rtn')
function sum() {
    var result = 0;
    for(var i = 0, len = arguments.length; i < len; ++i) {
        result += arguments[i];
    }
    return result;
}

// TEST
sum(1,2,3,4)

js 不像 java 那种有什么重构、重载之类的概念。js 同名方法只能有一个,所以其实不用管你定义的时候定义了几个,你就死命的传就好了

基于你说的,答案明显就是 arguments 了。es6 的话就是展开运算符了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题