使用 for 循环为数组提供错误

Ben*_*Odr 6 javascript for-loop node.js

我使用以下代码按预期工作,但使用 ESLINT 时出现错误

ESLint:迭代器/生成器需要再生器运行时,这对于本指南来说太重量级了,不允许它们使用。另外,应避免循环以支持数组迭代。(无限制语法)

这是代码

for (const subscription of resp.data.subscriptions) {
  if (subscription.url) {
    return subscription.url;
  }
}
Run Code Online (Sandbox Code Playgroud)

代码很简单

  • 从其他函数获取数据数组
  • 对每个数组项进行循环
  • 当第一个数组实例有 url 时,将其获取并返回

有没有更好的方法来避免 eslint 问题?

Max*_*len 12

关于此处的for...of使用及其最终限制存在争议

for(let i = 0; i < array.length; i ++) { ... }是过时的语法,虽然我知道每个人都明白它的含义,但我们应该抛弃它。

array.map具有功能性含义,我们不应该在闭包中产生副作用。

array.forEach是一种选择,但我个人不喜欢它来完成这种势在必行的工作。

因此,我认为出于上述原因,应该从受限制的语法中删除 ForOfStatement - 任何有冲突观点的人?我们知道最初的理由是什么吗?

for..of比这个还贵forEach,看看这个

我没有意见,你可以删除 eslint 规则

  • 我特别反对像 `"for(let i = 0; i &lt; array.length; i ++) { ... } 这样的公牛**,它是过时的语法,虽然我知道每个人都明白它的含义,但我们应该留下它。”`每个人都明白这一点。它是迄今为止性能最好的代码,但我们应该“把它抛在后面”。我们没有编译器来减轻迭代器对性能的影响,因此放弃性能最佳的解决方案简直是愚蠢的。 (5认同)
  • 不过,“forEach”并不总是可行的替代品,因为“break”在 forEach 循环中无效。如果您需要在某件事发生一次时放弃(例如,在我现在正在执行的代码中,当第一个形状具有真正的命中测试时,我不想再看更多),那么我们回到再次做出同样的选择。 (2认同)