【问题标题】: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;
}
}