1.前言

arguments, caller ,   callee 是什么?

在javascript 中有什么样的作用?本篇会对于此做一些基本介绍。

2. arguments

arguments:  在函数调用时, 会自动在该函数内部生成一个名为 arguments的隐藏对象。 该对象类似于数组, 但又不是数组。可以使用[]操作符获取函数调用时传递的实参。

<!--by oscar999 2013-1-16-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Arguments Test</title>
</head>
<body>
<script>
function testArg()
{alert("real parameter count: "+arguments.length);for(var i = 0; i < arguments.length; i++){alert(arguments[i]);}
}testArg(11);  //count: 1
testArg('hello','world');  // count: 2
</script>
</body>
</html>

看上去很简单。 需要注意的是 argument 保存的实参的信息。

上面有说,   arguments 不是一个数组,何以见得? 执行以下部分就可以知道了

(function () {alert(arguments instanceof Array); // falsealert(typeof(arguments)); // object
})();

对于以上立即执行函数写法不清楚的话, 可以参考
http://blog.csdn.net/oscar999/article/details/8507919

只有函数被调用时,arguments对象才会创建,未调用时其值为null:

alert(new Function().arguments);//return null

arguments 的完整语法如下:
[function.]arguments[n]
参数function :选项。当前正在执行的 Function 对象的名字。 n :选项。要传递给 Function 对象的从0开始的参数值索引。

3. caller

在一个函数调用另一个函数时,被调用函数会自动生成一个caller属性,指向调用它的函数对象。如果该函数当前未被调用,或并非被其他函数调用,则caller为null。

<script>
function testCaller() {var caller = testCaller.caller;alert(caller);
}function aCaller() {testCaller();
}aCaller();

4. callee

当函数被调用时,它的arguments.callee对象就会指向自身,也就是一个对自己的引用。
由于arguments在函数被调用时才有效,因此arguments.callee在函数未调用时是不存在的(即null.callee),且解引用它会产生异常。

<script>
function aCallee(arg) {alert(arguments.callee);
}function aCaller(arg1, arg2) {aCallee();}aCaller();
</script>

JavaScript 之arguments、caller 和 callee 介绍相关推荐

  1. JavaScript基础之 caller和callee

    后面继续聊数组相关的一些事情的时候,会出现这两个属性,放在篇幅里面解释,感觉会前后不连贯,所以单独就弄出来作为一篇.本篇很短就是简单的解释其作用,所以想要深入了解的可以跳过本篇了. caller:所有 ...

  2. javascript下的arguments,caller,callee,call,apply示例及理解

    在看到大家如此关注JS里头的这几个对象,我试着把原文再修改一下,力求能再详细的阐明个中意义.在提到上述的概念之 前,首先想说说javascript中函数的隐含参数:arguments Argument ...

  3. javascript 中 caller 与 callee 的作用以及用法

    这两个关键字在平时编码中几乎难以用到,但它们既然存在于javascript语言体系中,那么还是有必要了解下. caller 是 javascript 函数类型的一个属性,它引用调用当前函数的函数 fu ...

  4. javaScript中arguments.callee知识点

    javaScript中递归和arguments.callee javaScript中递归和arguments.callee知识点 arguments.callee 运行结果如下: 源码如下: < ...

  5. java caller_js中的caller和callee属性

    caller 返回一个对函数的引用,该函数调用了当前函数. functionName.caller functionName 对象是所执行函数的名称. 如果一个函数f是在全局作用域内被调用的,则f.c ...

  6. call、aplly、caller、callee分别是什么?

    call和aplly的区别: 概念: call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.因为 JavaScr ...

  7. JavaScript Function.arguments 属性详解

    转载自   JavaScript Function.arguments 属性详解 arguments属性是正在执行的函数的内置属性,返回该函数的arguments对象.arguments对象包含了调用 ...

  8. JavaScript的arguments及其子对象

    首先一个最大的问题是,arguments这个对象哪儿来的?也许有人会认为它是调用函数时引擎自带的一个局部变量,因为我们平时使用arguments的时候都是在函数中把它当作局部变量来使用的.事实上arg ...

  9. JavaScript、ES5和ES6的介绍和区别

    JavaScript简介 JavaScript一种动态类型.弱类型.基于原型的客户端脚本语言,用来给HTML网页增加动态功能. JavaScript由三部分组成: ECMAScript(核心)+DOM ...

最新文章

  1. Python如何优化列表接口进行分页
  2. Java基础语法纯小白入门
  3. 云原生时代,Java还是Go?
  4. Pocket PC/Smartphone软件安装包之制作DIY
  5. 鸽子为什么喜欢盘旋_如何为鸽子回避系统设置数据收集
  6. 基于Redis的限流系统的设计
  7. PyCharm 专题
  8. 获取Http请求参数
  9. Linq之Lambda进阶
  10. 【Linux】ubuntu锐捷客户端连接四川大学校园网
  11. 计算机组装与维护选教材,计算机组装与维护校本教材.doc
  12. Ubuntu安装百度官方网盘客户端
  13. 【EI稳定检索】第二届计算机科学、电子信息工程和智能控制技术国际会议(CEI 2022)
  14. 地铁路线程序C语言,个人作业-北京地铁出行路线规划命令行程序完成总结
  15. IIS7.5 的虚拟账户
  16. 【T+】畅捷通T+单据生成凭证的时候,提示存在单据未正常记账,需要重新计价。
  17. 流量从“海量”到“僵化”,精细化运营是企业最后一根救命稻草
  18. 反馈纠错机制在学习中的重要性
  19. R使用LASSO回归预测股票收益
  20. 三大运营商问题反馈或投诉——移动/联通/电信 ,另附一堆使用电话

热门文章

  1. 关于练习美剧听写中碰到的问题
  2. Python(6)-文件和异常
  3. c++ 捕获所有异常
  4. 解决开启Vue项目缺少node_models包问题
  5. sql server 对象名无效的解决方法
  6. 【报告分享】2021微信视频号生态洞察报告.pdf(附下载链接)
  7. 【白皮书下载】开源生态白皮书(2020年).pdf(附下载链接)
  8. 百度提前批算法工程师面筋!效率有、高
  9. 苹果怎么给软件加密码_用了2年苹果手机,才知道有这几个功能,钱没花冤枉,好用!!...
  10. 要不要做独立站系统?做了有什么用?