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

今天在群里聊天的时候学习到了一些以前没有注意过的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是隐式创建的全局变量,所以在函数外也能访问。

原文地址:https://www.cnblogs.com/zhangronghua/p/Learning2TipFromJSForest.html