我正在探索ES6的一些功能。检查可用的内容和使用位置:
http://kangax.github.io/compat-table/es6/
要玩弄我使用Babel:
在探索Map
时,兼容性表格会说明
IE11中不支持构造函数参数
但我复制了示例代码:
var result = function() {
var key1 = {};
var key2 = {};
var map = new Map([[key1, 123], [key2, 456]]);
return map.has(key1) && map.get(key1) === 123 &&
map.has(key2) && map.get(key2) === 456;
}();
console.log(result);
在IE11中执行它,令我惊讶的是,结果是 true 。 true 既属于Babel(虽然Babel没有生成任何代码),也属于IE 11控制台。
为什么?
答案 0 :(得分:2)
要玩弄我使用Babel:
该Babel在REPL中使用其Map
polyfill。如果您在IE11本身中逐字地运行该代码,则会得到false
,而不是true
:
var result = function() {
var key1 = {};
var key2 = {};
var map = new Map([[key1, 123], [key2, 456]]);
return map.has(key1) && map.get(key1) === 123 &&
map.has(key2) && map.get(key2) === 456;
}();
console.log(result);

IE11中的结果:
(由于在REPL中,如果你console.log(Map)
,它显示function Map() { [native code] }
,我被简短地抛出了。但是logansfmyth在{{3}中得到了肯定。如果Babel符合本机行为,Babel就会使用shimmed函数。)