arguments对象是比较特别的一个对象,arguments非常类似Array,但实际上又不是一个Array实例。

它指的是函数对象里的参数,且只能在函数内部使用。

使用

  检测函数的参数个数,引用属性 arguments.length。

  访问:arguments[0]

1.arguments对象的长度是由实参个数而不是形参个数决定的。

function a(a,b,c){
  console.log(arguments.length)
  console.log(arguments[3])
  b=b-a;
  console.log(b)
}
a(1,2);//2 undefined 1

2.JavaScript中函数是不能重载的。

如何实现重载呢?

function fn(){
switch(arguments.length){
case 0:
//执行语句块
break;
case 1:
//执行语句块
break;
case 2:
//执行语句块
break;
}
}

3.arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

function a(a){
if(a==1){return 1}
return a+arguments.callee(--a);
}
a(10);//
function ass(a,b,s){
console.log(arguments.callee.length);
console.log(arguments.length);
}
assl(1,2);//3 2

arguments.length是实参长度,arguments.callee.length是形参长度

caller 返回一个函数的引用,这个函数调用了当前的函数。

使用这个属性要注意:

1 这个属性只有当函数在执行时才有用
2 如果在javascript程序中,函数是由顶层调用的,则返回null

function b(){
a()
}
function a(){
alert(a===arguments.callee);//true
alert(arguments.caller=b);//function b(){a()}
alert(arguments.callee.caller===b);//true
}
b();
var a = function() {
alert(a.caller); //null
}
a();

 var a = function() {
      alert(arguments.callee);
 }
 a();//var a = function() { alert(arguments.callee); }

 

arguments对象,caller 和 callee的更多相关文章

  1. 【转】JavaScript 之arguments、caller 和 callee 介绍

    1.前言 arguments, caller ,   callee 是什么? 在JavaScript 中有什么样的作用?本篇会对于此做一些基本介绍. 本文转载自:http://blog.csdn.ne ...

  2. JavaScript 之arguments、caller 和 callee 介绍

    1.前言 arguments, caller ,   callee 是什么? 在javascript 中有什么样的作用?本篇会对于此做一些基本介绍. 2. arguments arguments:  ...

  3. jacascript 函数参数与 arguments 对象

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 调用函数时,实参和形参需要一一对应,但如果参数多了的话,会很苦恼: 我们可以用键值对(字面量对象)的方式传 ...

  4. 使用 arguments 对象

    arguments 对象表示参数集合,它是一个伪类数组,拥有与数组相似的结构,可以通过数组下标的形式访问函数实参值,但是没有基础 Array 的原型方法. //函数没有定义形参,但是在函数体内通过 a ...

  5. arguments对象的callee属性和caller属性

    js中的arguments对象代表正在执行的函数和调用它的函数的参数.arguments对象有两个属性,callee和caller.collee表示当前正在执行的方法,caller表示调用该方法的对象 ...

  6. arguments.callee 调用自身 caller,callee,apply and call

    一.Arguments该对象代表正在执行的函数和调用他的函数的参数.[function.]arguments[n]参数function :选项.当前正在执行的 Function 对象的名字.n :选项 ...

  7. arguments.callee 属性 递归调用 & caller和callee的区别

    arguments.callee   在函数内部,有两个特殊的对象:arguments 和 this.其中, arguments 的主要用途是保存函数参数, 但这个对象还有一个名叫 callee 的属 ...

  8. arguments对象的callee属性详解

    在函数内部,有两个特殊的对象:arguments和this. argument对象有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数.请看下面这个非常经典的阶乘函 ...

  9. js中的caller和callee属性

    caller返回一个对函数的引用,该函数调用了当前函数. functionName.caller functionName 对象是所执行函数的名称. 说明对于函数来说,caller 属性只有在函数执行 ...

随机推荐

  1. Mac最好的虚拟机软件Parallels,体验比Vmware棒

    每一位Mac电脑用户,必须安装虚拟机软件,在虚拟机里面安装Windows系统,解决日常必须用windows软件的问题,解决国内网银登录的兼容问题. 你一定不要用Mac系统自带的boot camp方式安 ...

  2. rte_mempool内存管理

    DPDK以两种方式对外提供内存管理方法,一个是rte_mempool,主要用于网卡数据包的收发:一个是rte_malloc,主要为应用程序提供内存使用接口.本文讨论rte_mempool.rte_me ...

  3. angular中的等号(==)判定

    使用angularjs的时候会使用到其中的表达式,其中有相等的判断.由于js有==和===的区别,于是就想看看是否相同.自己稍微做了一点测试,一看便知. 先给结论:angularjs表达式中的==和= ...

  4. ip地址分类和网段区分

    IP地址分类/IP地址10开头和172开头和192开头的区别/判断是否同一网段 简单来说在公司或企业内部看到的就基本都是内网IP,ABC三类IP地址里的常见IP段. 每个IP地址都包含两部分,即网络号 ...

  5. 关于java web开发需要哪些技术要求(简单的web界面管理系统)

    目前, 国内外信息化建设已经进入基于Web应用为核心的阶段, Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.概括一下,实施Ja ...

  6. Go-利用Map实现类似Python的Set数据结构

    该笔记参考<Go并发编程实战> 首先实现一个自定义的HashSet 利用interface{}作为键,布尔型作为值. package main import ( "bytes&q ...

  7. 分布式版本控制系统Git-----6.Git 常见命令一览表

    说明/备注 命令 备注 保存更新 git add [-i] -i 逐个确认 检查更新 git status 提交更新 git commit [-a] -m "<更新说明>&quo ...

  8. RPC框架基本原理(三):调用链路分析

    本文主要阐述下RPC调用过程中的寻址,序列化,以及服务端调用问题. 寻址 随机寻址 从可用列表中,随机选择地址 一致性寻址 可用服务地址一致性hash管理:根据可服务的地址,构造treemap,计算c ...

  9. Activity生命周期方法调用finish后的不同表现

    今天宿舍一个哥们出去面试遇到了这个面试题:"在activity oncreate()调用finish()"生命周期是怎么样的? 我赶紧写了些demo,发现确实很有趣: packag ...

  10. Git回退到服务器某个版本正确姿势

    背景: Git协作中,成员不可避免地会提交一些错误的版本,由于Git相比SVN引入了本地仓库,操作会相对复杂,以下为姿势分解 找一个源文件RspUtils.java,加上一行注释 //测试回退git服 ...