【问题标题】:IE11 is reporting a syntax error for [...a]IE11 报告 [...a] 的语法错误
【发布时间】:2019-10-10 14:14:07
【问题描述】:

在 chrome 和 firefox 中,这不是问题,但 IE11 在这一行给我一个语法错误 1002:

let aCopy = [...a];

但我不明白解决方案是什么。 Babel 给了我这个巨大的输出:

function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }

function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }

function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }

function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }

var aCopy = _toConsumableArray(a);

谁能告诉我这到底意味着什么?

【问题讨论】:

  • 你的a是什么?
  • 数组传播是 ES6 的特性。 IE 11 不支持 99.95% 的 ES6 功能。显示您的.babelrc
  • 你是说原行在IE下不行,还是Babel版本在IE下不行?。 IE 不支持 Symbol,所以你需要一个 polyfill。
  • @Sweepster 您无法理解其中的哪一部分?函数名称是不言自明的。你试过阅读他们的代码吗?
  • @Sweepster:但是如果您运行的是 Babel 之前的版本,那么 Babel 版本并不重要,如果您看到语法错误,这可能是导致问题的原因……

标签: javascript arrays ecmascript-6 internet-explorer-11


【解决方案1】:

IE 11 不支持可迭代对象的扩展语法(使用稀疏数组,在数组文字中)。它需要一个 js 编译器将 [...array] 转换为 es5 代码 (https://github.com/babel/babel/issues/4922)。请参考https://kangax.github.io/compat-table/es6/#test-spread_syntax_for_iterable_objects

【讨论】:

    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 2013-11-06
    • 2013-09-27
    • 2018-07-22
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2019-03-23
    相关资源
    最近更新 更多