您的位置:首页 > Web前端 > JavaScript

群聊天时学习到的两个JS知识(变量范围,Foreach顺序)

2010-07-29 16:03 309 查看
今天在群里聊天的时候学习到了一些以前没有注意过的JavaScript知识,特记录下来。
废话不说,请诸位先分别在FireFox以及IE下运行以下代码:

代码

<html>
<head>
</head>
<body>
<script type="text/javascript">
function show()
{
var arr = [];
arr[1] = "b";
arr[0] = "a";
arr[2] = "c";
var str1 = str2 = "";
for( var i = 0;  i < arr.length; i++)
{
str1 += arr[i];
}
for( var i in arr)
{
str2 += arr[i];
}
alert("str1:" + str1);
alert("str2:" + str2);
}

show();

alert("str2:" +str2);
alert("str1:" +str1);

</script>
</body>
</html>


点击这里看结果

运行结果:
Firefox:
str1:abc
str2:abc
alert("str1:" +str1); 这行代码报错。
alert("str2:" +str2); 这行代码正常输出
IE:
str1:abc
str2:bac
alert("str1:" +str1); 这行代码报错。
alert("str2:" +str2); 这行代码正常输出

原因分析:

1)ECMA没有规定for( var i in arr)的顺序,所以不同浏览器的实现可能不同。所以为了得到确定的结果,各位以后还是按第一个循环的方式写吧(即用普通的For循环)。

2)str1是局部变量,在函数外不能访问;str2是隐式创建的全局变量,所以在函数外也能访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: