有一个简单的原因,即使是经验丰富的开发人员/教程制作者也没有修改循环体中的值并理解 const/let for(let i
。for(const i
许多人将 const 视为永远不应该改变的“常数”。曾经。(当然它永远不会改变)。但他们进一步感到尴尬'重新定义具有相同名称的多个常量'。例如, const server = 'fun.example.com'
在一个地方和const server = 'boring.example.com'
另一个地方拥有是“令人反感的”。
循环中的变量(至少在 JavaScript 所基于的大多数类 C 语法语言中)是变化最大的变量。没有什么比所有 for 循环中的“i”更能改变它的值了。“i”通常最终成为 CPU 本身(而不是 RAM)上的“寄存器变量”,以便它可以“更快地更改”。这在 JavaScript 中甚至是正确的,因为它是从 'var' 开始的,当你做一个简单的for(let i=0;i<50;i++)
. 即for(const i=0;i<50;i++)
抛出一个错误。
因此,当您遍历列表时,您可以开始看到每秒可能数千次更改(或重新定义)的 'i' 和for(const i
. 因此for(const i...
,“看起来”或“感觉”i
将永远只有分配给它的第一个值。说起来似乎是“错误的”,const i..
并且在下一行代码中,i
每次“通过循环”时可能是完全不同的值。即使你“知道”你正在“为每次循环重新定义它”,对于一些开发人员来说,这本身就是有问题的。
出于这个原因,许多开发人员更喜欢const
在 JavaScript 中为“定义一次并在整个程序的整个执行过程中表示单个值”或至少“类中的所有内容”保留一个值。
因此,您的“标题”(我应该使用)中问题的答案可能是“继续使用 const,因为您有理由并且对您有意义”。你对“为什么是 for(让我如此普遍”)的疑问的答案也是我在这里回答的。对于某些人来说,他们只是习惯了,for(let
因为它适用于“for 循环”和“遍历列表” . 对于其他人来说,这是一个有意识的选择,因为他们不喜欢一遍又一遍地“重新定义一个常量”。
我会谦虚地建议,如果您确实使用const
请不要使用i
“项目”,因为 i 与递增的整数变量相关联。至少,如果您使用像 item 这样的好名称,将其视为仅存在一次的单一事物会感觉更舒服。我谦虚地建议,如果你使用“让”,也不要let i of
出于同样的原因使用。仅用于i
实际递增项目。即使用 for(let item of items) 或 for(let i=0;i<y;i++)