■知识点
arguments对象表示函数的实参集合,仅能够在函数体内可见,并可以直接访问。
arguments对象是一个伪类数组,不能够继承Array的原型方法。可以使用数组下标的形式访问每个实参,如arguments[0]表示第1个实参,下标值从0开始,直到arguments.length-1。其中,length是arguments对象的属性,表示函数包含的实参个数。同时,arguments对象可以允许更新其包含的实参值。
■实例设计
使用arguments对象能够增强函数应用的灵活性。例如,如果函数的参数个数不确定,或者函数参 数的个数很多,而又不想逐一定义每一个形参,则可以省略定义参数,直接在函数体内使用arguments 对象来访问调用函数的实参值。
【示例1】下面的示例定义一个求平均值的函数,函数借助arguments对象来计算参数的平均值。在 调用函数时,可以传入任意多个参数。
function avg (){ //求平均数
var num =0, 1=0; //声明并初始化临时变量
for(var i = 0; i < arguments.length; i ++ ){ //遍历所有实参
if (typeof arguments [i] ! = "number") //如果参数不是数值
continue; //则忽略该参数值
num += arguments[i]; //计算参数的数值之和
1 ++ ; //计算参与和运算的参数个数
}
num /= 1; //求平均值
return num; //返平均值
}
console.log(avg(1, 2, 3, 4)); //返回2.5
console.log(avg(1, 2, n3n, 4)); //返回2.3333333333333335
【示例2】在页面设计中经常需要验证表单输入值,下面的示例检测文本框中输入的值是否为合法的邮箱地址。
function isEmail(){
if (arguments . length>l) throw new Error (”只能够传递一个参数"); //检测参数个数
var regexp = /A\w+((-\w+)|(\.\w+))*\@[A-Za-zO-9]+
((\.I-) [A-Za-z0-9]+)*\.[A-Za-zO-9]+$/; //定义正则表达式
if (arguments[0].search(regexp)!= -1) //匹配实参的值
return true; //如果匹配则返回true
else
return false; //如果不匹配则返回false
}
var email = "zhangsan@css21.cnn"; //声明并初始化邮箱地址字符串
console.log(isEmail(email)); //返回true
arguments对象是伪类数组,不是数组,可以通过length属性和中括号语法来遍历或访问实参的值。不过,通过动态调用的方式,也可以使用数组的方法,如push、pop、slice等。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>