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 相关文章推荐
LazyLoad 延迟加载(按需加载)
May 31 Javascript
js注意img图片的onerror事件的分析
Jan 01 Javascript
JS解决url传值出现中文乱码的另类办法
Apr 08 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
JS实现复制内容到剪贴板功能
Feb 05 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
Feb 10 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
Oct 13 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 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
博士208HAF收音机实习报告
2021/03/02 无线电
第四章 php数学运算
2011/12/30 PHP
PHP的5个安全措施小结
2012/07/17 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
简明json介绍
2008/09/28 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
Python如何获取系统iops示例代码
2016/09/06 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
学习Django知识点分享
2019/09/11 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
美国电视购物:QVC
2017/02/06 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
大学考试作弊检讨书
2014/01/30 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
门前三包责任书
2014/04/15 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
经营管理策划方案
2014/05/22 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
罚款通知怎么写
2015/04/22 职场文书
2015年暑假工作总结
2015/07/13 职场文书
感恩老师主题班会
2015/08/12 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书