最近我使用babel试验了ES6代码。我很惊讶地看到编译的for of循环的详细代码。这是一个例子:
ES6
const a = [1, 2, 3, 4, 5];
for (const i of a)
{
console.log(i);
}
编译
"use strict";
var a = [1, 2, 3, 4, 5];
for (
var _iterator = a,
_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 i = _ref;
console.log(i);
}
标准for
循环或.forEach
循环看起来与ES6中的循环几乎完全相同。我在代码中使用了for of
循环,这是迭代数组的简洁方法。但直到现在我还没有意识到它带来的所有附加状态和逻辑。我想知道使用此方法与普通for
循环或.forEach
相比是否具有不可忽视的性能成本?
答案 0 :(得分:3)
我想知道使用此方法与普通
for
循环或.forEach
进行比较是否具有不可忽视的性能成本?
这完全取决于阵列的大小。
除非您重复数百万个元素,否则您不会注意到差异。
为了兼容性目的,Babel扩展了这个循环。较旧的浏览器没有for...of
,但功能可以像这样再现。