Ada*_*kis 4 javascript ecmascript-6
我有以下代码,从现实世界的例子中简化.
let arr = [0,1,2],
s = new Set(arr);
let arr2 = [...s];
alert('3 == ' + arr2.length);
Run Code Online (Sandbox Code Playgroud)
问题是这会失败,并在Google Chrome上产生一个空的arr2,它有一个原生的Set实现,但是一个polyfilled Array.from.有趣的是,它在IE11上运行正常,它有一个polyfilled Array.from AND Set.
Babel将展开集转换为此
var arr2 = [].concat(_toConsumableArray(s));
Run Code Online (Sandbox Code Playgroud)
并_toConsumableArray返回Array.from.我在里面设置了一个断点_toConsumableArray,我可以看到它通过调用生成一个空数组Array.from.
我的问题是,这是否是Array.from polyfill中的一个错误,因为它没有正确处理本机(不是polyfilled)Set,或者是Babel代码的问题,因为Array.from(x)它不是完美的等价物...x(当x不是数组).
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |