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確實代表了同一個數組。