理解ES2015中的词汇论点

时间:2018-01-12 11:49:08

标签: ecmascript-6

我在看:

https://babeljs.io/learn-es2015/

它有以下例子:

// Lexical arguments
function square() {
  let example = () => {
    let numbers = [];
    for (let number of arguments) {
      numbers.push(number * number);
    }

    return numbers;
  };

  return example();
}

square(2, 4, 7.5, 8, 11.5, 21); // returns: [4, 16, 56.25, 64, 132.25, 441]

我试图了解这里发生的事情: 特别是有人可以解释为什么square使用内部箭头功能而不是仅仅执行所需的操作? 这不能重写为:

function square() {
    let numbers = [];
    for (let number of arguments) {
      numbers.push(number * number);
    }

    return numbers;
}

“example”中的额外包装会改变这个函数的行为吗?

1 个答案:

答案 0 :(得分:1)

它只是表明箭头函数中的arguments是指arguments函数的square。一个简单的函数不是这样:

function square() {
  let example = function() {
    let numbers = [];
    for (let number of arguments) {
      numbers.push(number * number);
    }

    return numbers;
  };

  return example();
}

square(2, 4, 7.5, 8, 11.5, 21); // returns: []