[英]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.