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模拟的Ping效果代码 (Web Ping)
Mar 13 Javascript
使用jquery mobile做幻灯播放效果实现步骤
Jan 04 Javascript
解决JS浮点数运算出现Bug的方法
Mar 12 Javascript
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 Javascript
JS上传图片前实现图片预览效果的方法
Mar 02 Javascript
jQuery内容过滤选择器用法示例
Sep 09 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
Apr 04 jQuery
js禁止浏览器的回退事件
Apr 20 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
javascript头像上传代码实例
Sep 28 Javascript
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 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
星际争霸秘籍
2020/03/04 星际争霸
用文本文件制作留言板提示(上)
2006/10/09 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
javascript表单验证和Window详解
2014/12/11 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
学习python类方法与对象方法
2016/03/15 Python
python中threading开启关闭线程操作
2020/05/02 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
如何理解委托
2012/01/06 面试题
什么是索引指示器
2012/08/20 面试题
介绍下Java中==和equals的区别
2013/09/01 面试题
公务员更新知识培训实施方案
2014/03/31 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
护士年终考核评语
2014/12/31 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
MySQL查询日期时间
2022/05/15 MySQL