這很奇怪,我遇到了簡單的嵌套循環在javascript中的問題。Javascript嵌套for循環無法正常工作
我的代碼是這樣的:
var a = 0, b = 2048;
var i = 0, l = 2048;
for(; a < b; a++) {
for(; i < l; i++) {
console.log(a, b, i, l);
}
}
所以,雖然我很期待輸出這樣(0..2047), 2048, (0..2047), 2048
,我有這樣的輸出:0, 2048, 0..2047, 2048
,其中第一可變:a
不能簡單地從迭代0至2047. 改寫概念:當內部循環正確迭代時,外部循環只在索引0處執行一次。
我確定這是一個簡單而愚蠢的問題,但我無法真正發現..
評論
非常感謝大家發現這個問題,這是令人難以置信的,我怎麼看不到這一點。我接受西蒙的答案,因爲它似乎更清潔,更優雅的對我說:
- 他不能重新初始化變量作爲
for(var i = 0;...)
只是重置 - 他包括在變量復位語句,而不是之後每次迭代
- 他不聲明變量
var a = 0, i = 0
,然後復位,在每一個for語句 - 他使用常規的增量
- 他在片段開始時宣佈的每一個變量,而不是在不同的聲明它們的執行時間
再次感謝!
其原因很簡單,因爲當我達到2048外環不能再次執行 – thoggy