В чем разница между Array.prototype.slice.call (arguments) и [... args]?

Я знаю это Array.prototype.slice.call(arguments) используется для создания аргументов в реальном массиве, как показано ниже:

function foo() {
  // convert arguments to an array:
  var argsArray = Array.prototype.slice.call(arguments);
  // . . . foo's logic . . .
}

и я также могу использовать spread operator для достижения той же функциональности, что и ниже

function foo(...argsArray) {
  // . . . foo's logic . . .
} 

Помимо менее подробного использования spread operator, в чем разница между обоими подходами?

1 ответ

Решение

В вашем примере оба варианта должны работать одинаково.

Объект arguments в основном использовался перед остальными параметрами, а оператор распространения имел значение. Согласно MDN, его больше не следует использовать в современном JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

Другие вопросы по тегам