`

JavaScript 之arguments、caller 和 callee 介绍

 
阅读更多

1.前言

arguments, caller ,   callee 是什么?

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

 

2. arguments

arguments:  在函数调用时, 会自动在该函数内部生成一个名为 arguments的隐藏对象。 该对象类似于数组, 但又不是数组。可以使用[]操作符获取函数调用时传递的实参。
[html] view plain copy
 
  1. <!--by oscar999 2013-1-16-->    
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4. <head>  
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  6. <title>Arguments Test</title>  
  7. </head>  
  8. <body>  
  9. <script>  
  10. function testArg()  
  11. {  
  12.     alert("real parameter count: "+arguments.length);  
  13.     for(var i = 0; i < arguments.length; i++)  
  14.     {  
  15.         alert(arguments[i]);  
  16.     }  
  17. }  
  18.   
  19.   
  20. testArg(11);  //count: 1      
  21. testArg('hello','world');  // count: 2    
  22. </script>  
  23. </body>  
  24. </html>  
看上去很简单。 需要注意的是 argument 保存的实参的信息。

上面有说,   arguments 不是一个数组,何以见得? 执行以下部分就可以知道了
[javascript] view plain copy
 
  1. (function () {  
  2.     alert(arguments instanceof Array); // false  
  3.     alert(typeof(arguments)); // object  
  4. })();  
对于以上立即执行函数写法不清楚的话, 可以参考
http://blog.csdn.net/oscar999/article/details/8507919

只有函数被调用时,arguments对象才会创建,未调用时其值为null:
[javascript] view plain copy
 
  1. alert(new Function().arguments);//return null  

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


3. caller

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

[javascript] view plain copy
 
  1. <script>  
  2. function testCaller() {  
  3.     var caller = testCaller.caller;  
  4.     alert(caller);  
  5. }  
  6.   
  7. function aCaller() {  
  8.     testCaller();  
  9. }  
  10.   
  11. aCaller();  

4. callee

当函数被调用时,它的arguments.callee对象就会指向自身,也就是一个对自己的引用。
由于arguments在函数被调用时才有效,因此arguments.callee在函数未调用时是不存在的(即null.callee),且解引用它会产生异常。
[javascript] view plain copy
 
  1. <script>  
  2. function aCallee(arg) {  
  3.   alert(arguments.callee);  
  4. }  
  5.   
  6. function aCaller(arg1, arg2) {aCallee();}  
  7.   
  8. aCaller();  
  9. </script> 
分享到:
评论

相关推荐

    js中arguments,caller,callee,apply的用法小结.docx

    在JavaScript中,arguments、caller、callee和apply是四个与函数调用相关的特性,它们在编写高级和复杂的函数逻辑时非常有用。下面将详细介绍这些概念及其用法。 1. **arguments对象** arguments对象是一个特殊...

    理解JavaScript的caller callee call apply

    ### 理解JavaScript中的`caller`...综上所述,理解`caller`、`callee`、`call`、`apply`以及`arguments`对象在JavaScript编程中至关重要,它们不仅增强了函数的灵活性和复用性,还提供了深入分析和调试代码的强大工具。

    Javascript - 全面理解 caller,callee,call,apply (转载)

    这篇文章将深入探讨四个关键概念:caller、callee、call和apply,它们都是JavaScript函数操作的核心部分,对于理解和使用高级JavaScript编程至关重要。 首先,我们来了解`caller`和`callee`。在JavaScript的函数...

    javascript中arguments,callee,caller详解

    JavaScript中的arguments、caller和callee是与函数调用相关的几个重要概念,它们分别代表函数调用时传递的参数对象、调用当前函数的函数以及当前正在执行的函数。 首先,我们来了解arguments。在JavaScript中,当...

    Javascript - 全面理解 caller,callee,call,apply

    在JavaScript的世界里,caller、callee、call和apply是四个非常重要的概念,它们涉及到函数的调用方式和执行上下文。这些知识点对于深入理解和优化代码至关重要,尤其在处理高阶函数和面向对象编程时。 首先,让...

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

    JavaScript中arguments、caller、callee、call和apply是与函数相关的几个重要概念和对象。它们为JavaScript的函数提供了非常灵活的功能,特别是在处理函数参数和调用上下文方面。接下来,将对这些概念逐一进行详细...

    理解JavaScript的caller,callee,call,apply

    在深入了解`caller`, `callee`, `call`, 和 `apply` 之前,我们先来看看`arguments`对象。`arguments`对象是在JavaScript函数内部自动创建的一个特殊对象,用于表示传入函数的实际参数。 ##### 基本概念 - **定义*...

    js的隐含参数(arguments,callee,caller)使用方法.docx

    JavaScript中的隐含参数`arguments`, `callee`, 和 `caller`是函数内部的特殊变量,它们提供了关于函数调用的重要信息。下面将详细解释这三个参数的使用方法。 **arguments对象** `arguments`对象是一个非常有用的...

    JavaScript中callee和caller的区别与用法实例分析

    本文实例讲述了JavaScript中callee和caller的区别与用法。分享给大家供大家参考,具体如下: 1.callee 在函数的内部,有两个特殊的对象:arguments和this。其中arguments是一个类似数组的对象,包含着传入函数的所有...

    js中的caller和callee属性介绍和例子

    在JavaScript中,caller和callee是与函数执行相关联的属性。它们用于在函数执行的上下文中获取对函数本身的引用。这两个属性主要用于函数递归调用时获取函数名和参数验证。不过需要注意的是,随着JavaScript的发展和...

    JavaScript arguments.callee作用及替换方案详解

    JavaScript中的`arguments.callee`是一...总的来说,尽管`arguments.callee`曾经在JavaScript中扮演了重要的角色,但出于性能和兼容性的考虑,开发者应该尽量避免使用它,转而采用更现代和高效的技术来实现相同的功能。

    javascript中callee与caller的用法和应用场景

    在JavaScript中,`caller` 和 `callee` 是与函数相关联的两个属性,它们提供了函数调用和被调用的上下文信息。了解这两个属性的用法,对于深入理解JavaScript中的函数执行机制非常有帮助。 首先来看`caller`属性。`...

    js中arguments,caller,callee,apply的用法小结

    JavaScript是一门以函数作为一等公民的编程语言,它为函数提供了几个特殊的内置对象和属性,这些包括arguments对象、caller属性、callee属性以及apply方法。下面将详细讲解这些功能的用途、特性和使用方法。 ### ...

    js的隐含参数(arguments,callee,caller)使用方法

    在JavaScript编程中,arguments、caller和callee是函数对象自带的三个隐含参数,它们为开发者提供了额外的函数执行信息,尤其在处理函数参数、递归调用以及调用栈追踪时非常有用。下面详细介绍这些隐含参数的使用...

    caller和callee的区别介绍及演示结果

    在JavaScript中,`caller` 和 `callee` 是两个与函数执行相关的特殊属性,它们提供了对函数调用堆栈的洞察力。接下来我们将深入探讨这两个属性的含义、使用场景以及注意事项。 `caller` 属性用于返回调用当前正在...

    理解Javascript的caller,callee,call,apply区别

    在深入探讨`caller`, `callee`, `call`, 和`apply`之前,我们先来了解一个重要的概念——`arguments`对象。 **`arguments`对象概述** - **定义**: 在JavaScript中,`arguments`是一个特殊的本地变量,它表示函数...

Global site tag (gtag.js) - Google Analytics