ES6 Map支持 - 在IE11中支持太大了吗?

时间:2016-08-09 16:37:23

标签: javascript ecmascript-6

我正在探索ES6的一些功能。检查可用的内容和使用位置:

http://kangax.github.io/compat-table/es6/

要玩弄我使用Babel:

https://babeljs.io/repl

在探索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控制台。

为什么?

1 个答案:

答案 0 :(得分:2)

  

要玩弄我使用Babel:

     

https://babeljs.io/repl

该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中的结果:

enter image description here

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