Javascript for-of循环的性能成本
最近,我正在使用ES6代码进行实验。我很惊讶地看到编译循环的冗长代码。以下是一个例子: ES6Javascript for-of循环的性能成本,javascript,ecmascript-6,Javascript,Ecmascript 6,最近,我正在使用ES6代码进行实验。我很惊讶地看到编译循环的冗长代码。以下是一个例子: 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, _i
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
相比,使用它是否具有不可忽略的性能成本
我想知道,与正常的for
循环或.forEach
相比,使用它是否具有不可忽略的性能成本
这完全取决于阵列的大小
除非你迭代了数百万个元素,否则你不会注意到有什么不同
出于兼容性目的,Babel将循环扩展了这么多。较旧的浏览器没有for…of,但其功能可以像那样重现
我想知道,与正常的for
循环或.forEach
相比,使用它是否具有不可忽略的性能成本
这完全取决于阵列的大小
除非你迭代了数百万个元素,否则你不会注意到有什么不同
出于兼容性目的,Babel将循环扩展了这么多。较旧的浏览器没有for…of,但其功能可以像那样重现