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 相关文章推荐
jquery 图片 上一张 下一张 链接效果(续篇)
Apr 20 Javascript
js中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
javascript加号&quot;+&quot;的二义性说明
Mar 04 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
Oct 01 Javascript
完善的jquery处理机制
Feb 21 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
Feb 08 Javascript
js使用generator函数同步执行ajax任务
Sep 05 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
Node.js实现简单的爬取的示例代码
Jun 25 Javascript
vuex actions异步修改状态的实例详解
Nov 06 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 Javascript
JS+CSS实现过渡特效
Jan 02 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
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
Python变量访问权限控制详解
2019/06/29 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
C#笔试题集合
2013/06/21 面试题
夜大毕业生自我评价分享
2013/11/10 职场文书
2014年国培研修感言
2014/03/09 职场文书
中式婚礼主持词
2014/03/13 职场文书
政府法律服务方案
2014/06/14 职场文书
保护校园环境倡议书
2015/04/28 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
大学学生会辞职信
2015/05/13 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android