Эта функция делает то, что я хотел, но не то, что я ожидал. Я ожидал, что он создаст два массива, поскольку ...args создает массив переданных аргументов, а map() что-то делает с каждым значением массива, к которому он подключен, и сохраняет результаты в новом массиве. Может кто-нибудь сказать мне, почему эта функция не создает два массива?
let practiceFunc = (...args) => {
let arr = args.map((e) => {
return e + 1
})
return arr ;
}
console.info(practiceFunc(1,2,3)) ;
document.write(practiceFunc(1,2,3)) ;@ggorlen я ожидал массив с числами 1 2 3 в качестве элементов, а затем массив, созданный массивом карт, содержащим элементы 2 3 4
args — это массив [1,2,3], а arr — массив [2,3,4]. Оба создаются, и возвращается только arr.
@ggorlen да, спасибо, Джек помог мне понять это, и ты только что укрепил это в моем мозгу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Он создает два массива, но вы используете только один — arr, массив, возвращаемый функцией. args также используется, но так же, как и массив, используемый в map - вы можете легко опустить его и использовать arguments (однако для этого требуется функция ES5, поскольку стрелочные функции не имеют своего orwn arguments, и вам придется извлечь значения с использованием Object.values):
let practiceFunc = function() {
let arr = Object.values(arguments).map((e) => {
return e + 1
});
return arr;
}
console.info(practiceFunc(1, 2, 3));
document.write(practiceFunc(1, 2, 3));о да, вы правы, вот как функция может использовать метод map(). Я узнал об этом в разделе es6 на freeCodeCamp. Вы уверены, что мне нужна функция es5?
@iamlearningtocode Это привилегия, которая разблокируется с 15 репутацией, так что продолжайте задавать хорошие вопросы, и вы разблокируете привилегию в кратчайшие сроки.
Я не хотел проявить к вам неуважение, когда спросил, уверены ли вы в необходимости функции es5. на самом деле вы правы: «Функции стрелок не имеют собственных аргументов, привязывающихся к их области действия; при их вызове не создается объект аргументов».
@iamlearningtocode — это нормально — спрашивать — лучшая форма обучения.
"вы можете легко опустить его и использовать arguments" - это не имеет смысла. В синтаксисе остальных параметров нет ничего плохого, объект arguments не в моде по какой-то причине. И вы должны использовать Array.from() (что соблюдает порядок) вместо Object.values(). Но это все равно бесполезно - оба они также создают временный массив, так что здесь ничего не выиграно.
но имеет ли это значение @Bergi => «Функции стрелок не имеют собственной привязки аргументов в своей области; при их вызове объект аргументов не создается».
@iamlearningtocode Учитывая, что вам, вероятно, не следует использовать arguments, это не имеет значения
Добро пожаловать в СО! Что вы подразумеваете под «не создает два массива». Какой именно результат вы ожидали?