javascript参数arguments对象
ECMAScript函数的参数与大多树其他语言中函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么类型。函数体是通过arguments对象来访问参数数组。arguments对象只是与数组类似,但并不是数组实例。
例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。
因此,无需明确命名参数,就可以重写函数:
function sayHi(){
alert("Hello " + arguments[0] + "x" + arguments[1]);
}
检测参数个数
还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。
下面的代码将输出每次调用函数使用的参数个数:
function howManyArgs() {
alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);
上面这段代码将依次显示 "2"、"0" 和 "1"。
注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。
模拟函数重载
用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:
function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 5);
} else if(arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}
doAdd(10); //输出 "15"
doAdd(40, 20); //输出 "60"
当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。
虽然不如重载那么好,不过已足以避开 ECMAScript 的这种限制。
转载于:https://www.cnblogs.com/zhutianpeng/p/4262317.html
javascript参数arguments对象相关推荐
- JavaScript高级使用(一)--参数Arguments对象
在定义函数时,可以不定义形参,但是在函数体内可以通过Arguments对象获取到传递给函数的每个实参值: <script> function f(){//函数没有定义形参for(var i ...
- JS 函数参数arguments对象(实例)
实例(统计所有数值的和) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- 如何利用JavaScript的arguments对象实现用代码打印调用栈的需求
示例代码: <html> <script> function getCallStack() {var stack = "Callstack:", fn =a ...
- 对JavaScript内置对象arguments的一些见解
深入理解JavaScript内置对象arguments 这两天有伙伴问到我关于arguments的问题,使我产生了一种arguments对象容易被学习者忽略的想法,想分享一下自己对于JavaScrip ...
- 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...
- JavaScript 函数 ,对象
复习函数 函数定义 function函数名(){ 函数体 函数调用: 函数名() *参数:形参和实参 *形参:函数定义的时候函数名字后面的小括号里的变量就是参数,是不需要写var *实参:函数调用的时 ...
- Arguments 对象
arguments 是一个对应于传递给函数的参数的类数组对象. arguments对象是所有(非箭头)函数中都可用的局部变量. 可以使用arguments对象在函数中引用函数的参数.索引从0开始. a ...
- JavaScript教程——函数(arguments 对象)
arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...
- JavaScript学习系列3 -- JavaScript arguments对象学习
在实际项目开发中,目前还是很少使用到JavaScript 中的arguments对象,那么它到底是干什么用的呢 arguments是JavaScript中的一个类数组对象,它代表传给一个正在执行的函数 ...
最新文章
- 平时的你VS面试的你
- 2016年5月9日 晨间日记
- android 自定义flowlayout,Android 自定义ViewGroup之实现FlowLayout-标签流容器
- mysql同一台服务器上不同数据库中个别表内容同步
- mybatis工作笔记002_mybatis中如果返回的结果没有的话默认返回null的list_但可启用returnInstanceForEmptyRow_返回为list不为null但为0条
- 吊打 IE、Firefox,谷歌 Chrome 十年封神记
- 无线时代来临,谁来管理我的无线AP?
- 非标准硬件控制之增加系统API
- error:“Unexpected namespace prefix xmlns found for tag LinearLayout”
- Access 数据库导入到SQL Server 2000
- 深度学习--概率图模型(一)
- Mathpix小工具下载
- delphi微信授权登陆
- 天津仁爱学院2021级高职升本科新生报到须知
- pandas学习手记-柱状图
- 最新版网页浏览器Flash插件离线版安装程序下载
- 订单助手,拼多多,淘宝或者自定义商城,自动下单发货,无人值守店铺
- 多尺度计算机模拟方法,多尺度问题的数值模拟.pdf
- 240. 搜索二维矩阵 II
- HTML/CSS共7k字带你能独立完成简单网页的制作
热门文章
- 夺冠没含金量!用python和BI可视化分析,湖人赢在这点上
- 看完阿里的代码规范,立马学会代码分层,再也不会被同事怼
- CIO们拼命都想上的“网红”中台,也有它的另一面
- mybatis 一对一、一对多查询、多对多(使用注解)
- ssm练手小项目_20 个 JavaScript+Html+CSS 练手的小项目
- vue添加弹出框数据绑定
- vue添加网址连接需要强制数据绑定(a标签里面添加网址)
- G - Periodic Strings (周期串)
- Puzzle——模拟
- 数据结构实验 寻找数组主元素(2013考研题)