我在Internet Explorer的“ of”部分开始的两个“ For”循环中收到此错误SCRIPT1004: Expected ';'
。有解决此问题的解决方法吗?
for(item of workstationData.coPathColumns) {
var builtId = '#icat-' + item;
if(!!$(builtId)[0].innerText) {
$(builtId)[0].parentNode.hidden = false;
}
}
答案 0 :(得分:0)
如brk所述,IE不支持of,请查看here了解详情。
您可以使用forEach
或简单的for
循环。我之所以喜欢简单的for
循环,是因为它不是基于callback
的循环(异步),而forEach
具有callback
函数。
for(let i =0; i< workstationData.coPathColumns.length; i++) {
item = workstationData.coPathColumns[i]; //assuming item is defined before, otherwise use let item = ...
var builtId = '#icat-' + item;
if(!!$(builtId)[0].innerText) {
$(builtId)[0].parentNode.hidden = false;
}
}
答案 1 :(得分:0)
Internet Explorer不支持for ... of
循环。
如此处所示:MDN Documentation
此外,我建议您检查功能或功能集是否支持您必须支持的浏览器,在本例中为Internet Explorer,请选中caniuse.com
您的代码:
for(item of workstationData.coPathColumns) {
var builtId = '#icat-' + item;
if(!!$(builtId)[0].innerText) {
$(builtId)[0].parentNode.hidden = false;
}
}
可以转换成传统的for
循环:
for(var i = 0; i < workstationData.coPathColumns; i++) {
var builtId = '#icat-' + workstationData.coPathColumns[i];
if(!!$(builtId)[0].innerText) {
$(builtId)[0].parentNode.hidden = false;
}
}
或者,如果您可以自动执行此“转码”过程,那真是太好了。因此,请仔细查看babel
。将您的代码粘贴到babeljs.org
产生以下输出-应该等效于转换为for...of
标准的es2015-loose
循环:
"use strict";
for (var _iterator = workstationData.coPathColumns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
if (_isArray) {
if (_i >= _iterator.length) break;
item = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
item = _i.value;
}
var builtId = '#icat-' + item;
if (!!$(builtId)[0].innerText) {
$(builtId)[0].parentNode.hidden = false;
}
}