js数组中的reverse()方法
reverse方法是将数组中的元素的顺序进行反转,在原数组上操作,然后返回原数组。由于本人是学习js的新人,对reverse函数进行了几个小实验,以下实验均在Chrome浏览器上运行
实验一:reverse方法能否用于undefined与null上
实验代码如下:
1 <script type="text/javascript"> 2 var foo=function () { 3 var c=null; 4 var d=undefined; 5 //reverse方法测试代码 6 console.log(c.reverse());//报错 7 console.log(d.reverse());//报错 8 } 9 foo(); 10 </script>
如果将代码改成如下所示:
1 <script type="text/javascript"> 2 var foo=function () { 3 var c=[null]; 4 var d=[undefined]; 5 //reverse方法测试代码 6 console.log(c.reverse());//[null] 7 console.log(d.reverse());[undefined] 8 } 9 foo(); 10 </script>
结论:reverse方法不能再null与undefined上运行
实验二:空数组上运行reverse方法得出什么样的结果
实验代码如下:
1 var e=[]; 2 console.log(e.reverse());//[]
结论:输出空数组
实验三:reverse方法返回数组本身相关实验
实验代码如下:
1 <script type="text/javascript"> 2 var foo=function () { 3 var b=[false,undefined,null]; 4 //reverse方法测试代码 5 var b_reverse_result=b.reverse(); 6 console.log(b);//[null,undefined,false] 7 console.log(b_reverse_result);//[null,undefined,false] 8 } 9 foo(); 10 </script>
结果分析:由于b数组执行reverse方法之后返回的是b数组元素反转之后的顺序,而b_reverse_result与b指向是同一个数组,所以二者输出结果都是b数组反转之后的结果。
实验代码如下:
1 <script type="text/javascript"> 2 var foo=function () { 3 var b=[false,undefined,null]; 4 //reverse方法测试代码 5 console.log(b.reverse());//[null, undefined, false] 6 var b_reverse_result=b.reverse(); 7 console.log(b_reverse_result);//[false, undefined, null] 8 console.log(b);//[false,undefined,null] 9 } 10 foo(); 11 </script>
结论:reverse方法在数组自身上操作,而且b与b_reverse_result确实代表了同一个数组。