今天在群里聊天的时候学习到了一些以前没有注意过的JavaScript知识,特记录下来。
废话不说,请诸位先分别在FireFox以及IE下运行以下代码:
代码
1 <html>
2 <head>
3 </head>
4 <body>
5 <script type="text/javascript">
6 function show()
7 {
8 var arr = [];
9 arr[1] = "b";
10 arr[0] = "a";
11 arr[2] = "c";
12 var str1 = str2 = "";
13 for( var i = 0; i < arr.length; i++)
14 {
15 str1 += arr[i];
16 }
17 for( var i in arr)
18 {
19 str2 += arr[i];
20 }
21 alert("str1:" + str1);
22 alert("str2:" + str2);
23 }
24
25
26
27 show();
28
29 alert("str2:" +str2);
30 alert("str1:" +str1);
31
32 </script>
33 </body>
34 </html>
原因分析:
1)ECMA没有规定for( var i in arr)的顺序,所以不同浏览器的实现可能不同。所以为了得到确定的结果,各位以后还是按第一个循环的方式写吧(即用普通的For循环)。
2)str1是局部变量,在函数外不能访问;str2是隐式创建的全局变量,所以在函数外也能访问。