JS函数arguments数组获得实际传参数个数的实现方法


Posted in Javascript onMay 28, 2016

JS与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JS就灵活多了,可以随意传参,实参比形参少或多都不会报错。

实参比形参多不会报错

function say(a){
  alert(a); 
}
 
say('琼台博客','WEB技术博客');

执行结果

JS函数arguments数组获得实际传参数个数的实现方法

我们再来看看形参比实参多的结果

function say(a,b){
  alert('a 的值是 '+a+'\nb 的值是 '+b); 
}
 
say('琼台博客');

执行结果

JS函数arguments数组获得实际传参数个数的实现方法

a 对应第一个实参“琼台博客”,b 没有对应的实参所以值为undefined

arguments对象

其实有时候我们在程序设计比较复杂的时候并不指定参数个数,都是灵活运用。在函数里有一个数组arguments就是专门存储实参数组的,通过arguments我们就可以知道实参个数以及值。

function arg(){
  var str = '总共传了'+arguments.length+'个参数\n';
  for(var i=0;i<arguments.length;i++){  
    str += '第'+(i+1)+'个参数值:'+arguments[i]+'\n'; 
  }
  alert(str);
}
arg('琼台博客','PHP博客','WEB技术博客');

执行结果

JS函数arguments数组获得实际传参数个数的实现方法

在以上例子中,我们定义函数arg并没有给它指定形参,而是使用arguments对象接收实参,非常灵活。

比如我们可以利用它来计算出一组数字里最小的数字,不管这组数字有多少个。如以下代码:

function arg(){
  var tmp = 0, str = '在 ';
  for(var i=0;i<arguments.length;i++){  
    for(var g=0;g<arguments.length;g++){
      if(arguments[g]<arguments[i]){
        tmp = arguments[g]; 
      } 
    }
    str += arguments[i]+',';
  }
  alert(str.substr(0,str.length-1)+' 里最小的值是 '+tmp);
}
arg(200,100,59,3500);

执行 200,100,59,3500  四个数对比结果

JS函数arguments数组获得实际传参数个数的实现方法

我们在加入两个数,分别是 5 和 60

function arg(){
  var tmp = 0, str = '在 ';
  for(var i=0;i<arguments.length;i++){  
    for(var g=0;g<arguments.length;g++){
      if(arguments[g]<arguments[i]){
        tmp = arguments[g]; 
      } 
    }
    str += arguments[i]+',';
  }
  alert(str.substr(0,str.length-1)+' 里最小的值是 '+tmp);
}
arg(200,100,59,3500,5,60);

执行 200,100,59,3500,5,60 六个数对比结果

JS函数arguments数组获得实际传参数个数的实现方法

根据两次运算结果,我们发现无论我们传进多少个数字,都能正确比对结果。arguments一般用在实参个数不定的地方,比如上边的例子,你可以传5个数进去比较,也可以传100个数进去比较都可以。

以上这篇JS函数arguments数组获得实际传参数个数的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
提高网站信任度的技巧
Oct 17 Javascript
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
jquery动态改变form属性提交表单
Jun 03 Javascript
jQuery 判断图片是否加载完成方法汇总
Aug 10 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
JavaScript SHA512加密算法详细代码
Oct 06 Javascript
JavaScript 有用的代码片段和 trick
Feb 22 Javascript
vue keep-alive请求数据的方法示例
May 16 Javascript
Vue自定义toast组件的实例代码
Aug 15 Javascript
Node登录权限验证token验证实现的方法示例
May 25 Javascript
实现vuex原理的示例
Oct 21 Javascript
深入理解JS函数的参数(arguments)的使用
May 28 #Javascript
深入理解js中this的用法
May 28 #Javascript
关于function类中定义变量this的简单说明
May 28 #Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
May 28 #Javascript
动态更新highcharts数据的实现方法
May 28 #Javascript
不同js异步函数同步的实现方法
May 28 #Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 #Javascript
You might like
计数器详细设计
2006/10/09 PHP
php xml 入门学习资料
2011/01/01 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
JavaScript 常用函数
2009/12/30 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
详解在Javascript中进行面向切面编程
2019/04/28 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
日语专业推荐信
2013/11/12 职场文书
倡议书格式模板
2014/05/13 职场文书
党员干部一句话承诺
2014/05/30 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
工程承包协议书
2014/10/20 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
五一劳动节活动总结
2015/02/09 职场文书
初中历史教学反思
2016/02/19 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL