【问题标题】:Are there any cases JavaScript’s forEach works where a for loop doesn’t?是否有 JavaScript 的 forEach 可以在 for 循环不起作用的情况下工作?
【发布时间】:2021-02-06 13:47:07
【问题描述】:

JavaScript 的 Array.prototype.forEach 通常比 for 循环慢很多。这是因为forEach 包含了for 循环通常没有的额外检查。在for 循环不起作用的情况下,forEach 循环是否有效(由于这些检查)?

要清楚,我不是在问 为什么 forforEach 快。我在问forEach 中的额外检查是否有用。

【问题讨论】:

标签: javascript arrays loops for-loop foreach


【解决方案1】:

forEach 和使用 for 循环之间有几个区别

最明显的是他们如何处理稀疏数组。如果 forEach 遇到一个空数组元素,它不会尝试运行回调,但是 for 会并且数组项将给出 undefined。

另一方面,你不能像 for 循环一样跳出 forEach。

更多详情请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

【讨论】:

    【解决方案2】:

    forEach() 跳过数组中的空元素(孔),for 不这样做。

    【讨论】:

      【解决方案3】:

      您可以通过将传统的增量更改为更复杂的操作来使for 循环尽可能慢。它还必须在每次迭代期间进行不等式检查,因此这是另一个通过使用更复杂的条件来引入延迟的机会。

      forEach 非常具体,但for 可以提供更大的灵活性。

      【讨论】:

      • 对。但是在任何情况下forEach 可以做for 做不到的事情吗?
      • 不,您链接到的 polyfill 答案证实了这一点。这些检查是预先发生的,而不是在循环内部。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2023-02-07
      相关资源
      最近更新 更多