Javascript 普通函数和箭头函数之间的不同:未定义的参数返回错误

Javascript 普通函数和箭头函数之间的不同:未定义的参数返回错误,javascript,ecmascript-6,arguments,Javascript,Ecmascript 6,Arguments,ES6新手 我是es6新手,箭头函数有一个问题,我无法解决或在任何地方都找不到 这是我的问题,让我们将此函数作为参考: Javascript: const plus = function() { let sum = 0; for (let i = arguments.length - 1; i >= 0; i--) { sum += arguments[i]; console.log(i); } return sum;

ES6新手

我是es6新手,箭头函数有一个问题,我无法解决或在任何地方都找不到

这是我的问题,让我们将此函数作为参考:

Javascript:

const plus = function() {
    let sum = 0;
    for (let i = arguments.length - 1; i >= 0; i--) {
        sum += arguments[i];
        console.log(i);
    }
    return sum;
    console.log(arguments);
}

console.log(plus(2,4,6,8));
它工作正常,结果是20,浏览器可以解释它。唯一的问题是,当我尝试在es6中进行翻译时,函数将返回一个错误,在这种情况下,未定义参数:

const plus = () => {
    let sum = 0;
    for (let i = arguments.length - 1; i >= 0; i--) {
        sum += arguments[i];
        console.log(i);
    }
    return sum;
    console.log(arguments);
}

console.log(plus(2,4,6,8));
我得到了这一部分,但即使我将参数定义为空数组,结果仍然是一样的

我试图理解错误,但不喜欢如何解决它,而是更好地使用es6背后的理论

谢谢

使用:

const plus=(…参数)=>{
设和=0;
for(设i=arguments.length-1;i>=0;i--){
总和+=参数[i];
//控制台日志(i);
}
//log(参数);
回报金额;
}

日志(加上(2,4,6,8))箭头函数不获取
参数
对象。您可以使用显式扩展语法捕获数组中的实际参数。还需要显式显示参数吗?或者有没有其他方法可以避免这种情况。扩展语法是goyes的一种方法,您确实需要显式显示参数const plus=(…参数)。在本例中,我使用参数(我选择的名称有点混淆)作为参数。我真的需要使用参数吗?好的,我得到了它和rest参数的概念,感谢使用
参数
,因为示例名称似乎不是个好主意。它在严格模式代码中也无效。可能值得更改为
args