今天我们来看看arguments对象及属性。arguments对象不能显式创建,arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同。索引 n 实际上是arguments 对象的 0…n 属性的其中一个参数。

 function add(a,b){
console.log(typeof arguments);
for(var attr in arguments){
console.log(attr+":"+arguments[attr]);
}
return a+b;
} add(10,20)

  

  通过输出结果看到,arguments其实是一个对象,而不是一个数组,而这个数组有2个属性,属性名为0和1,其值分别为10和20

  在JavaScript中,参数列表分为形参和实参。形参即为定义函数时指定的参数,实参为调用函数时指定的参数。例如在上面例子中可以通过

alert(add(10))

  来调用函数,这里只指定了一个参数,即实参个数为1,形参个数为2。在JavaScript中,并没有要求实参个数必须和形参个数相同。上面的代码同样可以执行。只是输出NaN

  在实际中,我们可以这样,先判断参数个数

 function add(a,b){

     //add.length也可以获取形参个数,但实际中用arguments.callee.length
if(arguments.length==arguments.callee.length){
return a+b;
}else{
return "参数错误";
} }

  arguments.length:获取实参个数

  arguments.callee.length:获取形参个数

arguments.callee:指带函数本身

  arguments常用于递归操作

  例如,求一个1到n的和

 function fn(n){

     if(n==1){
return 1;
}else{
return n+arguments.callee(n-1);
}
} alert(fn(100))

  结果为5050

Javascript arguments详解的更多相关文章

  1. javascript 函数详解2 -- arguments

    今天我们接着上篇文章来继续javascript函数这个主题.今天要讲的是函数对像中一个很重要的属性--arguments. 相关阅读: javascript 函数详解1 -- 概述 javascrip ...

  2. JavaScript中的arguments详解

    1. arguments arguments不是真正的数组,它是一个实参对象,每个实参对象都包含以数字为索引的一组元素以及length属性. (function () { console.log(ar ...

  3. JavaScript事件详解-jQuery的事件实现(三)

    正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...

  4. JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】

    正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...

  5. JavaScript事件详解-zepto的事件实现

    zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...

  6. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  7. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  8. [原创]JavaScript继承详解

    原文链接:http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html 面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++. ...

  9. javaScript基础详解(1)

    javaScript基础详解 首先讲javaScript的摆放位置:<script> 与 </script> 可以放在head和body之间,也可以body中或者head中 J ...

随机推荐

  1. centos 解压rar文件

    默认情况下centos是不支持winrar的解压与打包的,需要安装winrar的linux版本程序 首先得下载解压软件 wget http://www.rarsoft.com/rar/rarlinux ...

  2. python语法笔记(五)

    1.python内存管理 (1)对象内存使用 &nsbp;&nsbp;&nsbp;&nsbp;在python中通过执行内建函数 id(obj) 可以获得对象obj在内存 ...

  3. python语法笔记(二)

    1. 循环对象 循环对象是一类特殊的对象,它包含一个next()方法(在python3中是 __next__()方法),该方法的目的是进行到下一个结果,而在结束一系列结果之后,举出 StopItera ...

  4. iOS开发 UIPanGestureRecognizer手势抽象类

    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@sel ...

  5. matlab cross 3*1 向量叉乘

    一定是1*3  或者3*1 的向量才可以叉乘 A=[1 2 3] B=[4 5 6] cross(A,B) ans=[-3 6 -3] 解决机器人微分运动量之间的等价关系

  6. phalcon: 资源文件管 理 引入css,js

    <?php class IndexController extends Phalcon\Mvc\Controller { public function index() { //添加本地css资 ...

  7. 笔记 《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法 》

    阅读此书的笔记点: 此书目录即是对知识点最好的总结 第1章 熟悉Objective-C ---------------------------------------------- 第1条:了解Obj ...

  8. BliBli抢楼全攻略

    B站抢楼是一个很好玩的事情,每当新番出新集时.总有很多人想能够在前排发表评论,但是因为人数众多,往往不能如愿,今天就教大家一个抢楼的好办法. 我们平时抢楼的整个流程是这样的: 1.在官方放出的新番更新 ...

  9. javascript 函数调用方式

    1. 通过函数名直接调用 函数名(实际参数): 2. 通过指向函数的变量去调用 var 变量=函数名: 变量(实际参数):

  10. mybatis 简单配置

    一.com/book/map包下有两个配置文件: 1.MyBatisConfig.xml <?xml version="1.0" encoding="UTF-8&q ...