【问题标题】:Translate ES6 'for' loop from ES5 'for-each' loop从 ES5 'for-each' 循环翻译 ES6 'for' 循环
【发布时间】:2016-06-02 13:54:37
【问题描述】:

我需要帮助将以下 es6 循环转换为 es5 代码。

for (let [field_name, field] of impList) {
//// some code
}

谢谢。

【问题讨论】:

  • 这很大程度上取决于impList 是什么。 Map?一个数组?
  • 您是否尝试过使用转译器? Use Babel.

标签: javascript ecmascript-6 ecmascript-5


【解决方案1】:

假设 impListArray(或类似数组的对象),而不是 ES6 Iterable type(需要 polyfill 等),您可以大致将其转换为 for 循环:

for (var i=0; i<impList.length; i++) {
    var field_name = impList[i][0];
    var field = impList[i][1];
}

forEach

impList.forEach(function(entry) {
    var field_name = entry[0];
    var field = entry[1];
});

除了 impList 可能是一个 Iterable 之外,这里还有一些我没有翻译成 ES5 的细微差别,因为有很多警告。这就是为什么您应该使用诸如Babel 之类的转译器的原因。

【讨论】:

  • 说实话,我看不懂 Babel 的代码:for (var _iterator = impList.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next() ).done); _iteratorNormalCompletion = true) { var _step$value = _slicedToArray(_step.value, 2); var field_name = _step$value[0]; var _field = _step$value[1]; }
  • Babel 的输出是为计算机而不是人类编写的 :) 它包括 polyfills、shims 和功能来解决我上面描述的细微差别。你只需要知道你输入 ES6 并输出有效的 ES5!
  • 当我放 es5 代码时,'Symbol' 对象出现错误。
  • 我的项目在 ES5 中。我正在将 ES6 重构为 ES5。我是否需要包含它来编写 ES5?
猜你喜欢
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 2014-03-15
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多