В чем разница между 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