我的问题是关于在不同函数中命名多个迭代计数器的一般良好实践。假设我有 3 个不同的函数,每个函数都有for
循环。在第一个我使用了for(var i=0; i<5; i++)
所有其他函数也保持类似的for
循环。我应该在每个函数末尾的每个循环后将i
计数器更改为0
,还是在每个函数的每个for
循环中声明 3 个不同的变量作为迭代计数器?
我有 3 个不同的函数
如果它是三个不同的函数,并且你声明你的循环for (
var
i = 0)
,那么每个函数的i都不同。在这种情况下,var
在函数范围内声明变量(参见 MDN)。所以,i 是一个非常好的名字(大多数情况下,我看到嵌套循环(*)的i、j和k),不需要区分。
但是:如果没有var
,如果您不处于严格模式,我将具有全局范围。
作为旁注:从今天(ES6)开始,如果我不在循环外使用,我更喜欢使用for (
let
i = 0...
),因为在这种情况下,我的作用域是循环(MDN)。
(*) 即使需要三个嵌套循环,也可能有问题。
除非每个函数内部的交互以某种方式相关,否则无论名称如何,都应单独声明它们。
此外,除非您使用全局字段来i
每个代码块i
变量无论如何都只在本地范围内,因此无需重置任何内容。
基本上,我不会在全局范围内共享任何用于迭代的变量,如果合适,我会将此循环功能移动到它自己的作用域函数中。