我的问题是关于在不同函数中命名多个迭代计数器的一般良好实践。让我们假设我有3个不同的函数,每个函数都有for
循环。在第一个我使用for(var i=0; i<5; i++)
所有其他函数也包含类似的for
循环。我应该在每个函数结束的每个循环之后将i
计数器更改为0
,还是在每个函数的每个for
循环中声明3个不同的变量作为迭代计数器?
答案 0 :(得分:3)
我有3个不同的功能
如果它是三个不同的功能,并且您声明了循环for (
var
i = 0)
,那么它将是一个不同的 i 对于这些。在这种情况下,var
在函数范围内声明变量(see MDN)。所以, i 是一个非常好的名字(主要是,我看到嵌套循环的 i , j 和 k ) *))并且不需要区分。
但是:如果没有var
,如果您没有处于严格模式, i 将具有全局范围。
作为附注:截至今天(ES6),如果 i 我希望使用for (
let
i = 0...
) em>不在循环外使用,因为在那种情况下 i 的范围是循环(MDN)。
(*)即使如果需要三个嵌套循环,也可能出现问题。
答案 1 :(得分:2)
除非每个函数内部的交互以某种方式相关,否则它们应该单独声明,无论名称如何。
此外,除非您为i
每个代码块i
变量使用全局字段,否则无论如何都只在本地范围内,因此无需重置任何内容。
基本上,我不会特别在全局范围内共享任何迭代变量,如果合适的话,我会将这个循环功能移到它自己的范围函数中。