【JavaScript】浅析JavaScript中arguments对象的使用
arguments对象不能显式创建,arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同。索引 n 实际上是 arguments 对象的 0…n 属性的其中一个参数。
下面的示例演示了 arguments 对象的用法,arguments对象和Function是分不开的。
2
var i, s = "The ArgTest function expected ";3
var numargs = arguments.length; // 获取被传递参数的数值。4
var expargs = ArgTest.length; // 获取期望参数的数值。5
if (expargs < 2)6
s += expargs + " argument. ";7
else8
s += expargs + " arguments. ";9
if (numargs < 2)10
s += numargs + " was passed.";11
else12
s += numargs + " were passed.";13
s += "\n\n"14
for (i =0 ; i < numargs; i++){ // 获取参数内容。15
s += " Arg " + i + " = " + arguments[i] + "\n";16
}17
return(s); // 返回参数列表。18
}以上是arguments对象,由于和Function对象紧密地联系在一起。也就是说每一个函数都有自己的argument属性。下面我们来看看argument属性:为当前执行的 function 对象返回一个arguments 对象,function 参数是当前执行函数的名称,可以省略。
通过 arguments 属性(相对于Function来说),函数可以处理可变数量的参数。arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。请看下面的例子:
2
var i, s, numargs = arguments.length;3
s = numargs; 4
if (numargs < 2)5
s += " argument was passed to ArgTest. It was ";6
else7
s += " arguments were passed to ArgTest. They were " ;8
for (i = 0; i < numargs; i++)9
{10
s += arguments[i] + " ";11
}12
return(s);13
}我们知道每一个对象都有自己的属性,arguments对象也不例外,首先arguments的访问犹如Array对象一样,用0到arguments.length-1来枚举每一个元素。下面我们来看看callee属性,返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用。callee 属性的初始值就是正被执行的 Function 对象,这允许匿名的递归函数。
1
function factorial(n){
2
if (n <= 0)
3
return 1;
4
else
5
return n * arguments.callee(n - 1)
6
}
7
print(factorial(3));
到这里基本上把arguments对象给讲完了,不知还有其他的东西吗?其实很多东西我们都已经很熟悉了,除了上述的callee属性外,其他的我们都时不时在应用他们。
原文链接:
【JavaScript】浅析JavaScript中arguments对象的使用的更多相关文章
- js中arguments对象和this对象
js中arguments对象和this属性 如果不注重复习,花时间准备的材料毫无意义 arguments对象和this对象都是对象 直接来代码 <!DOCTYPE html> <ht ...
- JavaScript教程——函数(arguments 对象)
arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...
- 创建一个JS函数,运用JS中arguments对象
Javascript中有个内置的arguments对象. arguments对象包含了参数调用的参数数组. <p>查找最大的数.</p> <p id="demo ...
- 在js中arguments对象的理解
一.在函数调用的时候,浏览器每次都会传递进两个隐式参数 函数的上下文对象this 封装实参的对象arguments 二.arguments 对象 arguments 对象实际上是所在函数的一个内置类数 ...
- JS中arguments对象
与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数. 开发者定义的函数都可以接受任意个数的参数而无需跟定义的函数相匹配(根据 Netscape 的文档 ...
- JavaScript 删除数组中的对象
1.获得对象在数组中的下标 function (_arr,_obj) { var len = _arr.length; for(var i = 0; i < len; i++){ if(_arr ...
- 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...
- javascript学习笔记02--面向对象学习
js面向对象编程 1. javascript 是一种基于对象的编程 object-based(基于对象):遇到的所有对象都是对象2.javascript没有类class,但是有新的原型对象,习 ...
- arguments 对象的老历史
引题:为什么 JavaScript 中的 arguments 对象不是数组 http://www.zhihu.com/question/50803453 JavaScript 1.0 1995 年, ...
随机推荐
- BCG在程序中的使用
首先你电脑上是安装有BCG的,详细安装方法就是先双击安装程序,之后编译当中的两个project.之后将其生成的.dll\.lib文件放入C++的include中这样就能够使用BCG的控件了. 1. 在 ...
- Office 超级录屏如何旋转视频90度之后保存
打开视频转换专家 添加视频后点击编辑,然后在旋转的地方设置旋转,应用 输出可以正常播放
- Elasticsearch - 理解字段分析过程(_analyze与_explain)
我们经常会遇到问题.为什么指定的文档没有被搜索到.许多情况下, 这都归因于映射的定义和分析例程配置存在问题. 针对分析过程的调试,ElasticSearch提供了专用的REST API. _analy ...
- JavaScript 之 最佳位置选择
Javascript 文件(下面简称脚本文件)需要被HTML文件引用才能在浏览器中运行.在HTML文件中可以通过不同的方式来引用脚本文件,我们需要关注的是,这些方式的具体实现和这些方式可能会带来的性能 ...
- JDK5.0 特性线程 同步装置之CountDownLatch 同步装置之CyclicBarrier 线程 BlockingQueue
来自:http://www.cnblogs.com/taven/category/475298.html import java.util.concurrent.CountDownLatch; imp ...
- HDFS之FileStatus
任何文件系统的一个重要特性都是提供其目录结构浏览和检索它所存文件和目录相关信息的功能.FileStatus对象封装了文件系统中文件和目录的元数据,包括文件的长度.块大小.备份数.修改时间.所有者以及权 ...
- 西数移动固态SSD
好款推荐! 我可没有收广告费:哈哈哈 就是看着产品不错,喜欢小米! 西数出了SSD移动固态硬盘真心不错! 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- 延迟加载-association来实现
resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 需求: 如果查询订单并且关 ...
- stopPropagation 和stopImmediatePropagation区别
1.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UT ...
- Flash XSS 漏洞详解 根治的好办法
本文的目的是深层次的分析Flash的ExternalInterface的XSS漏洞,并提出比较有效的解决方案. 首先,我们看看什么情况下,会出现XSS. 第一种情况: 把flas ...