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的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
js的延迟执行问题分析
Jun 23 Javascript
javascript Promise简单学习使用方法小结
May 17 Javascript
jQuery绑定事件的四种方式介绍
Oct 31 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
Dec 03 Javascript
AngularJS读取JSON及XML文件的方法示例
May 25 Javascript
详解Vue.js Mixins 混入使用
Sep 15 Javascript
详解webpack模块化管理和打包工具
Apr 21 Javascript
node.js到底要不要加分号浅析
Jul 11 Javascript
uploadify插件实现多个图片上传并预览
Sep 30 Javascript
javascript贪吃蛇游戏设计与实现
Sep 17 Javascript
vue打开其他项目页面并传入数据详解
Nov 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中的float类型使用说明
2010/07/27 PHP
图片完美缩放
2006/09/07 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
python字符类型的一些方法小结
2016/05/16 Python
详解K-means算法在Python中的实现
2017/12/05 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
python中p-value的实现方式
2019/12/16 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
C#中的验证控件有几种
2014/03/08 面试题
本科生的职业生涯规划范文
2014/01/09 职场文书
三年级小学生评语
2014/04/22 职场文书
初中生操行评语大全
2014/04/24 职场文书
电教室标语
2014/06/20 职场文书
党支部活动策划方案
2014/08/18 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
2014年消防工作总结
2014/11/21 职场文书
赢在执行观后感
2015/06/16 职场文书
新年寄语2016
2015/08/17 职场文书
导游词之襄阳古城
2019/09/27 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
Pandas 数据编码的十种方法
2022/04/20 Python