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 相关文章推荐
Jquery实现搜索框提示功能示例代码
Aug 13 Javascript
JS 实现导航栏悬停效果(续)
Sep 24 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
Nov 20 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
关于JSON与JSONP简单总结
Aug 16 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
Javascript blur与click冲突解决办法
Jan 09 Javascript
js自制图片放大镜功能
Jan 24 Javascript
jQuery事件详解
Feb 23 Javascript
javascript计算对象长度的方法
Oct 25 Javascript
JS获取input[file]的值并显示在页面的实现方法
Mar 09 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 进程锁定问题分析研究
2009/11/24 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
js 分栏效果实现代码
2009/08/29 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
react build 后打包发布总结
2018/08/24 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
Python3 中文文件读写方法
2018/01/23 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
浅谈python 类方法/静态方法
2020/09/18 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
酒店实习个人鉴定
2013/12/07 职场文书
小学生新学期寄语
2014/01/19 职场文书
超市开学活动方案
2014/03/01 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
JavaScript异步操作中串行和并行
2021/11/20 Javascript