【问题标题】:Object.map lambda code is working in Chrome, Firefox, but not IE?Object.map lambda 代码在 Chrome、Firefox 中有效,但在 IE 中无效?
【发布时间】:2019-07-12 12:31:33
【问题描述】:

我无法让这部分代码在 IE 中运行。

它在 Chrome 和 Firefox 中运行良好,但 IE 在 lambda 表达式上抛出“严重错误”。所以在 IE 中分页,但对其他浏览器有效。

代码的目的是在将javascript时间戳加载到页面上的可编辑字段之前过滤掉它们。它也只从每个对象中选择需要的数据,而不是加载所有数据。而且我只是不确定 IE 中的问题是什么以及如何解决它。

ContractsService.getRefRFRInformation()
.then(function (results) {
    var rfrInfo = results.data.map(x => ({ 
      rfrInformationID: x.rfrInformationID,
      fiscalYear: x.fiscalYear,
      rfrNumber: x.rfrNumber,
      startDate: ($filter('date')(new Date(x.startDate), 'MM/dd/yyyy')),
      endDate: x.endDate ? ($filter('date')(new Date(x.endDate), 'MM/dd/yyyy')) : "",
      modificationDate: x.modificationDate, modifiedBy: x.modifiedBy
    }))
    $scope.refRFRInfo = rfrInfo;

感谢您的帮助。

【问题讨论】:

  • 你用的是哪个版本的IE?
  • 将其转换(或重构)为 ES5 代码。 IE 版本不支持箭头功能,可能也不支持很多其他 ES6 功能
  • @charlietfl 谢谢,你是对的。这只是 IE 不支持 ES6 的错误。

标签: javascript angularjs internet-explorer


【解决方案1】:

Lambda 或箭头函数是 ES6 规范的一部分,不受 Internet Explorer 支持。 this MDN link 中提到了这一点。您需要更改代码并以旧方式传递函数。

results.data.map(function(x) { ... });

有关更多详细信息,您可以在this link 中查看作为 ES6 的一部分引入的功能。 Internet Explorer 或其他旧版浏览器不支持这些。

【讨论】:

    【解决方案2】:

    尝试检查caniuse.com,他们有大多数 JS 功能的支持表以及实际支持它们的浏览器份额。可以看到,在 IE 中似乎根本不支持 lambda 函数,所以要么回到 ES5,要么使用 babel 让你的代码自动转译。

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 2011-12-17
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多