【问题标题】:Different between normal function and arrow function: arguments not defined return an error [duplicate]普通函数和箭头函数之间的区别:未定义的参数返回错误[重复]
【发布时间】:2020-03-28 06:03:25
【问题描述】:

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 背后的理论。

谢谢

【问题讨论】:

标签: javascript ecmascript-6 arguments


【解决方案1】:

使用Spread_syntax

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

console.log(plus(2, 4, 6, 8));

【讨论】:

  • 我需要显式参数吗?或者有没有其他方法可以避免这种情况。传播语法是要走的路
  • 是的,您确实需要明确参数
  • const plus = (...arguments)。在这种情况下,我使用参数(我选择的名称有点混淆)作为参数。我真的需要使用参数吗?
  • 好的,我知道了,还有rest参数的概念,谢谢
  • 使用arguments 作为示例名称似乎是个坏主意。它在严格模式代码中也无效。可能值得改为args
猜你喜欢
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 2019-07-06
  • 2015-11-03
  • 1970-01-01
  • 2016-11-26
相关资源
最近更新 更多