您的位置:首页> 前端教程> JS教程
文章导航

JavaScript arguments 对象

2018-8-17 00:11| 作者: admin| 查看: 2111| 评论: 0|来自: 蚂蚁部落

arguments是一个特殊对象,不用且不能由程序员主动创建。

函数被调用时,此对象会自动创建,代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
function func(x,y){
  for(var index=0;index<arguments.length;index++){
    console.log(arguments[index]);
  }
}
func(1, 2, 3, 4)

依次打印1,2,3,4四个参数,解析如下:

(1).存储了实际传入函数的参数。

(2).与数组类似,可以使用索引访问其中参数或者length返回参数数量。

关于形参和实参可以参阅JavaScript函数形参或者实参一章节。

利用arguments对象可以实现一些验证功能,比如对函数传入的参数数目限制。

如果传入的数量与期望数目不同,则报错。

代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
function func() {
    if( arguments.length == 2 ){        
        return arguments[0] + arguments[1];
    }else{        
        return '参数数目错误';
    }
}
console.log(func(2,4,6));

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/14/171220b4w4stg1gwal9d64.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

代码分析如下:

(1).函数期望传入2个参数。

(2).调用函数后,arguments对象存储实际传入的参数(2,4,6)。

(3).arguments.length属性获取实际传入参数的数量,判断传入的数量是否两个,如果是两个参数,那将两个参数相加,并返回它们的和,如果传入参数的数量不是两个,则返回"参数数目错误"。

(4).参数可以通过与数组相同的方式访问,arguments[0]返回从左边数第一个参数,arguments[1]返回从左边起第二个参数,以此类推。

是数组还是对象:

在前面已经介绍,arguments是对象,但非常类似于数组:

(1).可以使用索引访问其中存储的数据。

(2).使用length属性返回存储数据的数目。

但它并非是数组,证明这一点非常简单,如果是数组,那么肯定可以使用数组对象的方法。

代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
function func(x,y){
  arguments.push(5)
}
func(1, 2, 3, 4)

上面代码报错,因为arguments对象并不是数组,所以没有push方法。

将arguments转换为数组:

非常简单,代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
function func(x,y){
  let arr=Array.prototype.slice.apply(arguments);
  arr.push(5);
  console.log(arr);
}
func(1, 2, 3, 4)

上面代码将arguments对象转换为数组,更多内容参阅如下文章:

(1).prototype参阅JavaScript prototype一章节。

(2).apply()参阅JavaScript appy()方法一章节。

(3).slice()参阅JavaScript slice()方法一章节。

2

鲜花

握手

雷人

路过
1

鸡蛋

刚表态过的朋友 (3 人)

最新评论

返回顶部