Javascript for-of循环的性能成本

Javascript 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

最近,我正在使用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,
    _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,但其功能可以像那样重现