我们知道,JavaScript有没有BLOCK SCOPE
,所以当我写了一个for循环象下面这样:我应该如何申报在JavaScript游标变量?
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
的事情是:我应该使用var
声明变量i
?
如果这样:
当我有两个或多个连续的循环,我想用同样的游标变量i
,将申报不止一次!这只是有问题!
for(var i = 0; i < list1.length; ++i) {
// do something.
}
for(var i = 0; i < list2.length; ++i) {
// do something.
}
// `i` was declared more than once!
在这种形式下,游标变量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
}
for(j = 0; j < count2; ++j) {
// do something
}
for(k = 0; k < count3; ++k) {
// do something
}
如果我这样的代码,我觉得代码是可怕的:它具有声明和使用,以及晦涩的了解自己需要什么声明时间长的距离。
如果我省略了所有的声明,并且只是使用,这些游标变量将落入全局变量!这太可怕了!
所以我要求一个很好的做法,在这种情况下如何声明游标变量?
需要你的帮助。
在_some_ JavaScript中有块范围:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let – 2014-09-10 23:04:31
@MattBall很好,但似乎没有广泛支持,我失败了在chrome调试器中使用它。 – 2014-09-10 23:07:02
这两种方式都是一样的,两种做法都很完善。 – Bergi 2014-09-11 00:40:45