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 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
May 27 Javascript
微信小程序 框架详解及实例应用
Sep 26 Javascript
js实现文字选中分享功能
Jan 25 Javascript
JavaScript代码实现txt文件的上传预览功能
Mar 27 Javascript
.vue文件 加scoped 样式不起作用的解决方法
May 28 Javascript
vue数据初始化initState的实例详解
Apr 11 Javascript
React组件对子组件children进行加强的方法
Jun 23 Javascript
JavaScript数组常用的增删改查与其他属性详解
Oct 13 Javascript
vue element和nuxt的使用技巧分享
Jan 14 Vue.js
Vue使用Ref跨层级获取组件的步骤
Jan 25 Vue.js
深入理解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 向访客和爬虫显示不同的内容
2009/11/09 PHP
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
python线程池threadpool实现篇
2018/04/27 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
python保存数据到本地文件的方法
2018/06/23 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
详解python深浅拷贝区别
2019/06/24 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
思想汇报格式
2014/01/05 职场文书
开学寄语大全
2014/04/08 职场文书
事业单位考核材料
2014/05/21 职场文书
物理教育专业求职信
2014/06/25 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python