【问题标题】:JS error in Internet Explorer - Expected identifierInternet Explorer 中的 JS 错误 - 预期标识符
【发布时间】:2019-07-03 08:59:46
【问题描述】:

我在 Internet Explorer 中收到错误“预期标识符”。适用于所有其他浏览器。

                for(var [i, article] of articles.entries()) {
                  if(article.hero) {
                        heroes.unshift(article);
                        articles.splice(i, 1);
                        break;
                    }
                }

对此的任何帮助将不胜感激。

谢谢

【问题讨论】:

标签: javascript jquery arrays internet-explorer


【解决方案1】:

下面的代码应该可以工作:-

for (var _iterator = articles.entries(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
  var _ref;

  if (_isArray) {
    if (_i >= _iterator.length) break;
    _ref = _iterator[_i++];
  } else {
    _i = _iterator.next();
    if (_i.done) break;
    _ref = _i.value;
  }

  var _ref2 = _ref,
      i = _ref2[0],
      article = _ref2[1];

  if (article.hero) {
    heroes.unshift(article);
    articles.splice(i, 1);
    break;
  }
}

用于javascript代码的转换 参考:-https://babeljs.io/repl

【讨论】:

    【解决方案2】:

    IE 不支持对象和数组解构。 Object.entries 也不是。 而是尝试使用普通的for 循环。

    for (var i = 0; i < articles.lenght; articles++) {
      var article = articles[i];
      if (article.hero) {
        heroes.unshift(article);
        articles.splice(i, 1);
        break;
      }
    }

    【讨论】:

      【解决方案3】:

      转到 Destructuring assignment compatibility section

      IE 基本上不支持解构方法,因此您应该修改逻辑以获得更广泛支持的方法。

      例如:

      for (var i in articles) {
          var article = articles[i];
          if (article.hero) {
              heroes.unshift(article);
              articles.splice(i, 1); // (Pay attention) variable i should be a number.
              break;
          }
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多