【发布时间】:2016-04-09 10:52:18
【问题描述】:
在 ES6 中,当传递给 Set 构造函数时,我试图将 arguments 对象用作可迭代对象。它在 IE11 和 Chrome 47 中运行良好。它在 Firefox 43 中不起作用(抛出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);
仅供参考,我知道此代码有多种解决方法,例如将参数对象复制到真实数组或使用剩余参数。这个问题是关于 arguments 对象在 ES6 中是否应该是 iterable,可以在任何需要迭代的地方使用。
【问题讨论】:
-
@apsillers - 看起来已经编写了代码来修复它(上个月),并且正在审查和测试中。
标签: javascript ecmascript-6 iterable