<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>