js的arguments的作用,js中arguments的用法

  js的arguments的作用,js中arguments的用法

  本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。

  arguments对象表示函数的参数集合,只能在函数体中看到,可以直接访问。

  arguments对象的length属性和callee属性是最常用的:

  使用length属性获取函数的参数个数。arguments对象只能在函数体中可见,因此arguments.length只能在函数体中使用。

  使用callee属性引用当前arguments对象所在的函数。使用callee属性在函数体内调用函数本身。在匿名函数中,callee属性更有用。例如,它可以用于设计递归调用。

  示例1:获取实参和形参的个数

  使用arguments.length属性获取函数的参数个数。函数的参数个数可以通过使用function对象的length属性获得,该属性是只读的,在函数内部和外部都可以使用。

  下面的例子设计了一个checkArg()函数,用来检查函数的形参和实参是否一致,如果不一致就抛出异常。

  Function checkArg(a) {//检查函数的实际参数是否一致。

  如果(a.length!=a.callee.length) //如果实际参数个数不同,会抛出错误。

  抛出新错误(“参数和形式参数不一致”);

  }

  函数f(a,b){///求两个数的平均值

  checkArg(参数);//根据实参,检查函数实参与形参是否一致。

  return ((a * 1?a : 0) (b * 1?b:0))/2;//返回平均值

  }

  console . log(f(6));//抛出异常。调用函数f,传入参数示例2:在函数内部修改实参的值

  在下面的例子中,for循环用于遍历arguments对象,然后将循环变量的值传递给arguments,从而改变参数值。

  函数f() {

  for(var I=0;一.论据长度;I) {//遍历参数对象

  arguments[I]=I;//修改每个参数的值

  console . log(arguments[I]);//提示修改后的参数值

  }

  }

  f(3,3,6);//返回提示0,1,2而不是3,3,6示例3:改变函数实参的个数

  通过修改length属性的值,还可以更改函数的参数数量。当length属性值增加时,增加的参数值是未定义的;如果长度属性值减小,则长度值之后的参数值将被丢弃。

  函数f() {

  参数. length=2;//修改arguments property对象的length属性值

  for(var I=0;一.论据长度;i ) {

  console . log(arguments[I]);

  }

  }

  f(3,3,6);//返回提示3,3示例4:检测用户传递的参数是否符合要求

  在下面的示例中,通过使用arguments.callee获得匿名函数,然后通过函数的length属性获得函数参数的数目。最后将实际参数个数与参数个数进行比较,检查用户传递的参数是否符合要求。

  函数f(x,y,z) {

  var a=arguments . length();//获取函数参数的个数

  var b=arguments . callee . length;//获取函数参数的个数

  如果(a!=b_ {//如果实参数和形参数不相等,则给出错误信息。

  抛出新错误(“传递的参数不匹配”);

  }else {//如果实参和形参的个数相同,则返回它们的和。

  返回x y z;

  }

  }

  console.log(f(3,4,5));//返回值12arguments.callee相当于函数名。在上面的例子中,arguments.callee等于f。

  arguments 对象的应用

  在实际开发中,arguments对象非常有用。使用灵活的参数对象可以提高使用函数的灵活性,增强抽象编程中函数的适应性和纠错能力。下面的典型例子说明了论证的应用。

  1) 使用arguments对象可以增强函数应用的灵活性。例如,如果一个函数的参数个数不确定,或者函数的参数个数很大,并且不想逐个定义每个参数,那么可以省略定义参数,直接使用函数体中的arguments对象来访问调用函数的参数值。

  示例1

  以下示例定义了一个average函数,该函数在arguments对象的帮助下计算参数的平均值。调用函数时,可以传入任意数量的参数。

  函数avg() {//平均值

  var num=0,1=0;//声明并初始化临时变量

  for(var I=0;一.论据长度;I) {//遍历所有参数

  if(参数类型[i]!=number) //如果参数不是数值

  继续;//参数值被忽略。

  num=参数[I];//计算参数值的总和

  1 ;//统计参与求和运算的参数数量

  }

  num/=1;//平均值

  退货数量;//返回平均值

  }

  console.log(avg(1,2,3,4));//返回2.5

  console.log(avg(1,2, 3 ,4));//返回2.3333333333335例2

  在页面设计中,经常需要验证表单中输入的值。以下示例检查文本框中输入的值是否是合法的电子邮件地址。

  函数isEmail() {

  If (arguments.length1)抛出新错误(“只能传递一个参数”);//检测参数的数量

  var regexp=/^\w ((-\w ) (\。\w )) *\@[A-Za-z0-9] ((\。-)[A-Za-z0-9] )8\。[A-Za-z0-9]$/;//定义正则表达式

  if(参数[0]。搜索(regexp)!=-1) //匹配参数的值

  返回true//如果匹配,则返回true

  其他

  返回false//如果不匹配,则返回false

  }

  var email= 1798017447 @ qq.com//声明并初始化邮箱地址字符串

  console.log(isEmail(电子邮件));//返回true2) arguments对象是伪类数组,不是数组。您可以通过length属性和括号语法遍历或访问参数的值。但是通过动态调用方法,也可以使用数组方法,比如push、pop、slice等。

  示例3

  使用参数模拟重载。方法:通过arguments.length属性的值确定实际参数的个数和类型,决定执行不同的代码。

  函数sayHello() {

  switch(arguments.length) {

  案例0:

  回‘你好’;

  案例1:

  返回“Hello,”参数[0];

  案例二:

  return (arguments[1]==cn ?Hello,: Hello,)参数[0];

  };

  }

  console . log(say hello());//你好

  console . log(say hello( Alex ));//你好,亚历克斯

  console.log(sayHello(Alex , VN );//“你好,亚历克斯”示例4

  下面的示例使用动态调用的方法,并让arguments对象调用array方法slice(),该方法可以将函数的parameter对象转换为数组。

  函数f() {

  return[]slice . apply(参数);

  }

  console.log(f(1,2,3,4,5,6));//Return [1,2,3,4,5,6][推荐学习:javascript高级教程]以上是如何使用javascript arguments对象的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: