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 相关文章推荐
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 Javascript
JavaScript中的对象和原型(一)
Aug 12 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
Jan 08 Javascript
angularjs 页面自适应高度的方法
Jan 17 Javascript
Angularjs Promise实例详解
Mar 15 Javascript
Javascript实现购物车功能的详细代码
May 08 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
详解Vue.js中引入图片路径的几种方式
Jun 17 Javascript
js将URL网址转为16进制加密与解密函数
Mar 04 Javascript
JS Generator 函数的含义与用法实例总结
Apr 08 Javascript
JS实现前端路由功能示例【原生路由】
May 29 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根据两点间的经纬度计算距离
2014/10/31 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
python绘制高斯曲线
2021/02/19 Python
为什么需要版本控制?
2013/08/08 面试题
将相和教学反思
2014/02/04 职场文书
《草原》教学反思
2014/02/15 职场文书
大学生活自我评价
2014/04/09 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
单位推荐信范文
2015/03/27 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python