作业1、要求写一个函数,实现任意数组的翻转(这里的任意理解为任意长度,打算用argument来实现)
刚开始的代码:
// 4、写一个函数实现任意数组翻转
function reverse(){
var newarr=[];
for (var i=arguments.length-1;i>=0;i--){
newarr[newarr.length]=arguments[i];
}
return newarr
}
var re=reverse([1,2,3,4,5,6])//这里加了中括号,因为记得数组是加上[]的
console.log(re);
然后,运行一下,发现结果里面的元素并不翻转,回头去看了之前的视频,发现调用的时候,里面的元素是不需要加上[]的,还整以后的代码是:
// 4、写一个函数实现任意数组翻转
function reverse(){
var newarr=[];
for (var i=arguments.length-1;i>=0;i--){
newarr[newarr.length]=arguments[i];
}
return newarr
}
var re=reverse(1,2,3,4,5,6)
console.log(re);
这样就可以实现里面的元素翻转了。
这里说明一下argument的使用:
当不确定有多少个参数传递的时候,可以使用argugments来获取,js中,arguments实际上是当前函数的额内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。arguments展示形式是一个伪数组,因此可以进行遍历,伪数组具有的特点:
1、具有length属性
2、按索引方式储存数组
3、不具有数组的pop,push等方法(这也是为什么它是伪数组了)。
补充一点,这里之所以不加[],是因为使用的是arguments,如果代码是function reverse(arr){} 这样的话,后面的调用,数组就需要加上[].
function reverse(arr){
var newarr=[];
for (var i=arr.length-1;i>=0;i--){
newarr[newarr.length]=arr[i];
}
return newarr
}
var re=reverse([1,2,3,4,5,6])
console.log(re);