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函数的好处是使用参数和此关键字来引用父函数,而不是当前函数