轉自:http://blog.csdn.net/lushuaiyin/article/details/8541500
- <html>
- <body>
- <b><center>
- js中for循環的研究
- </center></b>
- <script type="text/javascript">
- //使用for (obj in array)的形式obj不用聲明。
- var mycars = new Array();
- mycars[0] = "Saab";
- mycars[1] = "Volvo";
- mycars[2] = "BMW";
- //實驗一:
- /*
- for (x in mycars)
- {
- //alert('--'+x);//每次彈出--0,--1,--2,而不是變量的內容
- document.write(mycars[x] + "------x---<br />")
- }
- alert(x);//2
- */
- //實驗二:
- /*
- for (var y in mycars)
- {
- document.write(mycars[y] + "--y---<br />")
- }
- alert(y);//2
- */
- //實驗三:
- /*
- for (i=0;i<mycars.length;i++)
- {
- document.write(mycars[i] + "---i----<br />")
- }
- alert(i);//3,之所以是3,是因為在循環外,最后還要走一次i++
- */
- //實驗四:
- /*
- for (var k=0;k<mycars.length;k++)
- {
- document.write(mycars[k] + "---k---<br />")
- }
- alert(k);//3
- */
- //實驗五:
- /*
- for (var h=0;h<mycars.length;h++)
- {
- document.write(mycars[h] + "---h---<br />")
- var objhhh='haha';
- }
- alert(objhhh);//haha
- */
- </script>
- 從上面的實驗可以得出以下幾點結論:
- 1,在for循環中變量都是全局的。不像java,在函數內聲明的變量,在函數外不能直接訪問,js都是全局的,
- 所以可以訪問。(實驗五)
- 2,基於上面的結論,我們可以知道,在for()循環中,括號中的變量最后已經改變了,而且是全局變量,
- 可以在循環外被訪問。
- 3,對於for循環,本實驗要說明的是在for(.. in ..)
- 或者for(..=0; ..<..; ..++)這兩種形式變量前面的var可以聲明,也可以不聲明。(實驗一到實驗四)。
- js默認會幫你聲明一個var(否則的話,這個變量本應該是undefined了)。
- 4,再談for(.. in ..)和for(..=0; ..<..; ..++)的區別:
- for(x in arr)中變量x是循環的索引數,即1,2,3....,(實驗一)。
- 這和java不一樣,在java中的for(x in arr),x已經是數組中的變量了,也就是變量的值。
- 而在for(i=0; i<arr.length; i++)這種形式就明確指出了,i就是索引值。
- </body>
- </html>