我有以下代碼,從現實世界的示例中簡化。ES6/Babel傳播錯誤與集合
let arr = [0,1,2],
s = new Set(arr);
let arr2 = [...s];
alert('3 == ' + arr2.length);
的問題是,這種失敗,併產生對谷歌瀏覽器的空ARR2具有天然集的實現,但是一個polyfilled Array.from。有趣的是,它在IE11上正常工作,IE11有一個填充Array.from AND Set。
巴貝爾轉換蔓延,設定到這個
var arr2 = [].concat(_toConsumableArray(s));
和_toConsumableArray
回報Array.from
。我在_toConsumableArray
內設置了一個斷點,我可以看到它通過調用Array.from
生成一個空數組。
我的問題是,這是在Array.from填充工具的錯誤,因爲它不能正確處理本地(不polyfilled)設置,或與巴貝爾代碼的問題,在Array.from(x)
不是...x
(當x不是數組時)完美等價。
嘗試在[「試試看」中的代碼](http://babeljs.io/repl/#?experimental=true&evaluate=true&loose=false&spec=false&playground=false&code=let%20arr%20%3D%20% 5B0 2C1%2C2%%5D%2C%0A%20%20%20%20歲%20%3D%20new%20Set(ARR)%3B%0A%0Alet%20arr2%20%3D%20%5B內容S在巴貝爾在Chrome 44的網站上生成'3 == 3'%5D%3B%0Aalert('3%20%3D%3D%20'%20%2B%20arr2.length)%3B)你確定你已經正確設置了你的polyfills嗎? – loganfsmyth
@loganfsmyth - funny - 如果缺少Set,Symbol和其他一些我缺少的東西,我有條件地加載了babel polyfill。我手動添加了MDN Array.from polyfill,因此Chrome不需要它。禁用並強制ES6墊片使其工作。 Bug必須是w/MDN填充。 –
你介意告訴使用哪個*'Array.from'的polyfill你正在使用? (儘管我無法看到它在這裏使用的地方)。另外,你的Chrome版本是什麼?我根本不支持'[... s]'語法。 – Bergi