IE11无法识别vendor.js中的rest参数

时间:2019-11-14 12:03:58

标签: javascript angular internet-explorer

在IE11中运行我的angular 7应用程序时,出现以下错误:

SCRIPT1010: Expected identifier
vendor.js (73764, 26)

有问题的行是:

return function (...args /*, callback*/) {

我相信这是因为浏览器无法识别其余运算符。我已经用尽了互联网上的所有建议,但问题似乎仍然存在。 以下是我正在工作的环境:

Angular: 6.1.10
... animations, common, compiler, core, forms, http
... language-service, platform-browser, platform-browser-dynamic
... router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.13.8
@angular-devkit/build-angular     0.13.8
@angular-devkit/build-optimizer   0.13.8
@angular-devkit/build-webpack     0.13.8
@angular-devkit/core              7.3.8
@angular-devkit/schematics        7.3.8
@angular/cli                      7.3.8
@angular/compiler-cli             7.2.13
@ngtools/webpack                  7.3.8
@schematics/angular               7.3.8
@schematics/update                0.13.8
rxjs                              6.5.2
typescript                        3.2.4
webpack                           4.29.0

1 个答案:

答案 0 :(得分:0)

参考this article,我们可以看到rest参数语法不支持IE浏览器。如果我们还使用箭头功能,则它也不支持IE浏览器,更多详细信息,请检查Arrow function expressions

作为一种解决方法,我们可以babel将其余参数语法转换为ES5语法。

例如:

function sum(...theArgs) {
  return theArgs.reduce((previous, current) => {
    return previous + current;
  });
}

console.log(sum(1, 2, 3));
// expected output: 6

console.log(sum(1, 2, 3, 4));
// expected output: 10

上面的代码将在IE11浏览器中显示“ SCRIPT1010:预期标识符”错误,使用babel翻译后,以下代码在IE11浏览器中可以很好地工作。

function sum() {
  for (var _len = arguments.length, theArgs = new Array(_len), _key = 0; _key < _len; _key++) {
    theArgs[_key] = arguments[_key];
  }

  return theArgs.reduce(function (previous, current) {
    return previous + current;
  });
}

console.log(sum(1, 2, 3));
// expected output: 6

console.log(sum(1, 2, 3, 4));
// expected output: 10