【问题标题】:Using different letters in a For Loop Variable context - Javascript在 For 循环变量上下文中使用不同的字母 - Javascript
【发布时间】:2023-03-05 00:47:01
【问题描述】:

我在文档中有几个for loops,它们的使用简化示例如下:

for (var i=0; i < element.length; i++) {
   element[i];
}

我在某处读到,最好对不同的循环实例使用不同的变量名,即使用 j 等而不是 i

因为我在脚本中有很多循环,所以在浏览内容时使用不同的字母开始变得更加难以阅读。

如果变量在括号内,仍然可以对所有变量使用i 吗?我没有任何名为 i 的全局变量。

我不能使用let,因为我的老板想将它保留在var,而不是使用 babel 等。

提前感谢您的任何建议。

【问题讨论】:

  • I can't use let because my boss wants to keep it at var and not use babel etc. 这没有任何意义。你真的应该使用 ES6+ 并稍后转译(并使用单独的变量),它使编码变得容易得多。
  • @CertainPerformance 有时这是有道理的,因为 babel、webpack、polyfills 等正在显着增加包大小,这对于移动设备经常使用的应用程序来说不太可能。
  • 循环嵌套时使用不同的字母。如果在同一缩进处有 300 个循环,则应在所有循环中使用“i”

标签: javascript for-loop variables


【解决方案1】:

如果它们不是嵌套的,你可以为不同的循环使用相同的变量,这是完全正常的,因为你的循环将同步执行,即一个接一个地执行,因此它们之间不会发生冲突。

【讨论】:

  • 感谢@EugeneTsakh
【解决方案2】:

如果您使用 var,变量将不会在本地范围内。因此,取决于您如何初始化 for 您可能会遇到麻烦。但如果我可以让我们退后一步......

如果您在同一个文件中执行多个 for 循环,我们是否违反了 DRY 原则(不要重复自己)?有什么方法可以使用像 forEach 或 map 这样的内置函数?或者我们可以将这些循环所做的事情抽象到我们自己的自定义函数中吗?

我认为探索它会很有用。但简短的回答是,您可能会遇到问题,具体取决于您如何在 for 循环中初始化 i 变量。

干净的代码很重要。它让我们的生活更轻松!

希望有帮助!

【讨论】:

  • 作者说他不能使用ES6特性。
  • forEach 是 2011 年发布的 Ecmascript 5.1 规范的一部分。因此它的兼容性在所有没有 Babel 的浏览器中都很常见。
  • 必须检查地图,但它实际上是在那之前的次要版本(5.0)中引入的。它甚至在 IE9 中也受支持。您可能会将这些功能与 ES6 中的较新版本中对 forEach 的优化以及 ES6 中引入的 Map 数据结构相混淆。阅读这两个方面很有用。干杯。
【解决方案3】:

如果您正在循环数组,请使用 .map 而不是 forEach 。 阅读我为什么推荐这个https://codeburst.io/javascript-map-vs-foreach-f38111822c0f?gi=8024d1c18f31的文章

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2019-12-19
    相关资源
    最近更新 更多