我应该如何在javascript中声明游标变量?
正如我们所知,javascript没有我应该如何在javascript中声明游标变量?,javascript,variables,scope,Javascript,Variables,Scope,正如我们所知,javascript没有块范围,因此当我编写一个for循环时,如下所示: list = [1, 2, 3, 4]; // notice about the `var` keyword for(var i = 0; i < list.length; ++i) { // Do something. } console.log(i); // shows 4 在这种形式中,游标变量i可能会声明多次,而代码本身意味着i变量可能在for块内具有作用域,但实际上并非如此 如果
块范围
,因此当我编写一个for循环时,如下所示:
list = [1, 2, 3, 4];
// notice about the `var` keyword
for(var i = 0; i < list.length; ++i) {
// Do something.
}
console.log(i); // shows 4
在这种形式中,游标变量i
可能会声明多次,而代码本身意味着i
变量可能在for块内具有作用域,但实际上并非如此
如果不是这样: 我应该在函数的前面显式声明所有游标吗
var i, j, k; // and maybe a long list that I didn't expected?
// Maybe some other code.
for(i = 0; i < count1; ++i) {
// do something
}
for(j = 0; j < count2; ++j) {
// do something
}
for(k = 0; k < count3; ++k) {
// do something
}
var i,j,k;//也许还有一长串我没想到的东西?
//也许是其他代码。
对于(i=0;i
如果我用这种方式编码,我认为代码很糟糕:声明和使用之间有很长的距离,并且在声明时不清楚它们是什么
如果我省略了所有的声明,只使用它们,这些游标变量将落入全局变量中!那太可怕了
所以我想问一个好的实践,在这种情况下如何声明游标变量
我需要你的帮助 通常最简单的方法是声明变量,然后在多个非嵌套循环中使用它
var i;
for(i = 0; i < list1.length; i++) {
// do something.
}
for(i = 0; i < list2.length; i++) {
// do something.
}
vari;
对于(i=0;i
在多个循环中重用
i
没有问题。一旦第二个循环开始,该值就被设置为初始值,一切正常。声明变量会将其提升到函数顶部,后续声明在语法上是合法的,但会被忽略。因此:
var i, j, k; // and maybe a long list that I didn't expected?
// Maybe some other code.
for(i = 0; i < count1; ++i) {
// do something
}
...
var i,j,k;//也许还有一长串我没想到的东西?
//也许是其他代码。
对于(i=0;i
如果你多次声明,解释器会在引擎盖下做什么
因此,以这种方式声明它(顶部的变量)通常是人们建议的(以及JSLint建议的)。某些JavaScript中有块作用域:@MattBall很好,但它似乎没有得到广泛支持,我在chrome调试器中没有使用它。两种方法都是一样的,这两种做法都是行之有效的。我认为由
++I
引起的问题不存在,它不是循环条件@Alex Waynet在循环的更新部分使用++i
和i++
没有区别。表达式的结果未在条件中使用。
var i, j, k; // and maybe a long list that I didn't expected?
// Maybe some other code.
for(i = 0; i < count1; ++i) {
// do something
}
...