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 相关文章推荐
DD_belatedPNG,IE6下PNG透明解决方案(国外)
Dec 06 Javascript
JQuery给元素添加/删除节点比如select
Apr 02 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
json格式的javascript对象用法分析
Jul 04 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
Feb 22 Javascript
详解微信小程序审核不通过的解决方法
Jan 17 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
Jan 31 Javascript
vue2 设置router-view默认路径的实例
Sep 20 Javascript
js实现点击生成随机div
Jan 16 Javascript
JS监听组合按键思路及实现过程
Apr 17 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 获取客户端的真实ip
2009/11/30 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
javascript 闭包
2011/09/15 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
js+html制作简单验证码
2017/02/16 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
python在控制台输出进度条的方法
2015/06/20 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
python logging 日志的级别调整方式
2020/02/21 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
Python使用Pygame绘制时钟
2020/11/29 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
出租车拒载检讨书
2015/01/28 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python