[英]ES6 / Babel spread error with Set
我有以下代码,从现实世界的例子中简化。
let arr = [0,1,2],
s = new Set(arr);
let arr2 = [...s];
alert('3 == ' + arr2.length);
问题是这会失败,并在Google Chrome上生成一个空的arr2,它具有一个本机Set实现,但是一个polyfilled Array.from。 有趣的是,它在IE11上运行正常,它有一个polyfilled Array.from AND Set。
Babel将展开集转换为此
var arr2 = [].concat(_toConsumableArray(s));
和_toConsumableArray
返回Array.from
。 我在_toConsumableArray
设置了一个断点,我可以通过调用Array.from
看到它产生一个空数组。
我的问题是,这是否是Array.from polyfill中的一个错误,因为它没有正确处理本机(不是polyfilled)Set,或者是Babel代码的问题,因为Array.from(x)
不是完美等效于...x
(当x不是数组时)。
我可以看到它通过调用
Array.from
生成一个空数组。 这是MDN的Array.from
的错误吗?
不是真正的错误,但实际上是正确记录的 :
此外,由于真正的迭代不能被填充,因此该实现不支持ECMA-262第6版中定义的通用迭代。
我认为这是指ES5中缺少Symbol.iterator
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.