Reputation: 10945
I was looking at:
https://babeljs.io/learn-es2015/
And it has the following example:
// 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]
and I was trying to understand what was really happening here: specifically can someone explain why does square use an internal arrow function instead of just performing the required actions? could this not be re-written to be:
function square() {
let numbers = [];
for (let number of arguments) {
numbers.push(number * number);
}
return numbers;
}
What does the extra wrapping in "example" change in the behavior of this function?
Upvotes: 1
Views: 130
Reputation: 5452
It simply demonstrates that arguments
in the arrow function refers to arguments
of square
function. this is not true with a simple function :
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: []
Upvotes: 1