簡體   English   中英

ES6 / Babel傳播錯誤與Set

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM