В ES6 я пытался использовать объект arguments
в качестве итерабельного при передаче конструктору Set
. Он отлично работает в IE11 и в Chrome 47. Он не работает в Firefox 43 (бросает a TypeError: arguments is not iterable
). Я просмотрел спецификацию ES6 и не могу найти определение того, должен ли объект arguments
быть итерируемым или нет.
Вот пример того, что я пытался сделать:
function destroyer(arr) {
var removes = new Set(arguments);
return arr.filter(function(item) {
return !removes.has(item);
});
}
// remove items 2, 3, 5 from the passed in array
var result = destroyer([3, 5, 1, 2, 2], 2, 3, 5);
log(result);
FYI, я знаю, что для этого кода существуют различные способы работы, такие как копирование объекта аргументов в реальный массив или использование аргументов отдыха. Этот вопрос связан с тем, должен ли объект arguments
быть iterable
или нет в ES6, который может использоваться везде, где ожидаются ожидаемые итерации.