Ecmascript 6 理解ES2015中的词汇论点

Ecmascript 6 理解ES2015中的词汇论点,ecmascript-6,Ecmascript 6,我在看: 它有下面的例子: // 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

我在看:

它有下面的例子:

// 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”中的额外包装对该函数的行为有什么影响?

它简单地说明了arrow函数中的
参数
指的是
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: []

这只是一个玩具示例,并不意味着有用(比较
square=(…nums)=>nums.map(x=>x*x);
)。这只是证明,这是完全正确的<代码>让示例=()=>{…}
是ECMAScript 6,用于
让示例=函数(){…}就个人而言,我不认为新的=>结构是一个净好处。任何没有明确原因而降低代码可读性的内容都应该忽略。@bearvarine arrow函数的好处是使用
参数
关键字来引用父函数,而不是当前函数