Что получается в результате выполения func.apply(this, [].slice.call(arguments, 1));

141
10 декабря 2019, 06:40
function sum() {
  return [].reduce.call(arguments, function(a, b) {
    return a + b;
  });
}
function mul() {
  return [].reduce.call(arguments, function(a, b) {
    return a * b;
  });
}
function applyAll(func) {
    return func.apply(this, [].slice.call(arguments, 1));
  }
alert( applyAll(sum, 1, 2, 3) ); // 6
alert( applyAll(mul, 2, 3, 4) ); // 24
alert( applyAll(Math.max, 2, -2, 3) ); // 3
alert( applyAll(Math.min, 2, -2, 3) ); // -2

помогите понять код...а именно эти строки

return func.apply(this, [].slice.call(arguments, 1));
return [].reduce.call(arguments, function(a, b) {
    return a * b;
});
Answer 1
return func.apply(this, [].slice.call(arguments, 1));

От arguments отрезается первый аргумент (это func), а хвост ([].slice.call(arguments, 1)) передаётся в apply.

var a = [func, 1, 2, 4];
a.slice(1); // [1, 2, 4]

Поскольку arguments - это не настоящий массив, то arguments.slice использовать нельзя, поскольку такого метода нет. Вместо этого к ним применяется метод массива Array.prototype.slice - в более короткой записи [].slice - доступ через ненужный инстанс вместо непосредственного.

return [].reduce.call(arguments, function(a, b) {
  return a + b;
});

Обычное применение функции reduce. По той же причине, что и выше, вызов через метод ненужного массива.

READ ALSO
Разделение одной картинки на 3 части

Разделение одной картинки на 3 части

Увидел на сайте разделение одной картинки на три разных блока, как это реализуется?

228
После вывода функции из ооп она выдаёт unefinde

После вывода функции из ооп она выдаёт unefinde

Всем привет, помогите реализовать функцию checkErrorФункция постоянно выводит 1 и если вывести console

144
Как сделать поочередную загрузку изображений

Как сделать поочередную загрузку изображений

У меня есть сайт, и на нем есть слайдер картинокПри загрузки страницы фотографии загружаются одновременно(к примеру смотришь первый слайд,...

165
Как прописать в javascript путь к ресурсам

Как прописать в javascript путь к ресурсам

Работаю с картой leafletjs и в коде javascript использую ссылки на 2 иконкиИ если файлы иконок лежат вместе с тестовым html файлом все работает, но когда...

151