![](/img/trans.png)
[英]How would I declare a variable with a “+” or “-” sign in it? Javascript
[英]How should I declare for cursor variable in javascript?
我們知道,javascript沒有BLOCK SCOPE
,所以當我寫一個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
問題是:我應該使用var
來聲明變量i
嗎?
如果是這樣的話:
當我有兩個或多個連續的for循環時,我想使用相同的游標變量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
變量可能在for塊內有一個范圍,但實際上是NOT。
如果不是這樣:
我應該在函數前面明確聲明所有游標嗎?
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;
for(i = 0; i < list1.length; i++) {
// do something.
}
for(i = 0; i < list2.length; i++) {
// do something.
}
在多個循環中重用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
}
...
如果您多次聲明它,那么解釋器會在引擎蓋下做什么。
因此,通常以這種方式聲明它(頂部的變量)是人們的建議(以及JSLint的建議)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.