用于命名多个迭代计数器的良好实践

时间:2017-07-16 13:16:20

标签: javascript loops iteration counter

我的问题是关于在不同函数中命名多个迭代计数器的一般良好实践。让我们假设我有3个不同的函数,每个函数都有for循环。在第一个我使用for(var i=0; i<5; i++) 所有其他函数也包含类似的for循环。我应该在每个函数结束的每个循环之后将i计数器更改为0,还是在每个函数的每个for循环中声明3个不同的变量作为迭代计数器?

2 个答案:

答案 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变量使用全局字段,否则无论如何都只在本地范围内,因此无需重置任何内容。

基本上,我不会特别在全局范围内共享任何迭代变量,如果合适的话,我会将这个循环功能移到它自己的范围函数中。