一、Function

函数是对象,函数名是指针。

函数名实际上是一个指向函数对象的指针

使用不带圆括号的函数名是访问函数指针,并非调用函数。

函数的名字仅仅是一个包含指针的变量而已。即使在不同的环境中执行,全局的sayColor()函数 与 obj.sayColor() 指向的仍是同一个函数。

在函数内部,有两个特殊的对象,this 和 arguments 。

以下 总结自 《高程三 P110 》

每个函数都是Function类型的实例,函数都是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。

函数表达式:

 var foo = function () {       // 函数表达式, 以上代码定义了变量sum,并将其初始化一个函数   这和声明 数字、布尔值、字符串等其他变量是一样的
...
};

函数声明:

 function foo() {
alert('foo');
}

函数声明、函数表达式 区别:

解析器(代码运行的环境)会率先读取函数声明,并使其在执行任何代码之前可以访问;至于函数表达式,必须等到解析器执行到它所在的代码行,才会真正被解释执行。

document.onmousemove 默认是指向一个空的处理函数,如果想要自定义该事件的处理函数,就给它覆盖一个自定义函数的指针,也就是JS函数名(即document.onmousemover=functionname),而不能使用document.onmousemover=functionname()。

二、arguments对象

mdn arguments

The arguments object is an Array-like object(类数组,没有pop push方法) corresponding to the arguments passed to a function.

The arguments object is a local variable available(任何函数内部都有这个对象,是访问参数的入口) within all(non-arrow非箭头函数) functions. You can refer to a function's arguments within the function by using the arguments object. This object contains an entry for each argument passed to the function, the first entry's index starting at 0.

caller和callee的区别

arguments是函数内部的类数组对象,包含着传入函数中的所有参数,代表传递给函数的参数列表。

arguments 对象仅在函数内部有效,在函数外部调用 arguments 对象会出现一个错误

arguments对象有下面两个属性和一个不再被支持的属性。

1.   callee属性

(arguments对象,不是函数对象的属性)是一个指针,指向拥有这个arguments对象的函数。

callee放回正在执行的函数本身的引用,它是arguments的一个属性。

Reference to the currently executing function(指向当前正在运行的函数).

2.    length属性

argument.length   指向传递给当前函数的参数数量(即实参的数量)

三、caller属性

caller(是函数对象的属性)返回一个函数的引用,这个函数调用了当前的函数。

Reference to the function that invoked(指向调用当前函数的函数) the currently executing function.

四、length

每个函数都包含两个属性:prototype和length.

length(length属性)  是函数对象的一个属性值,指明该函数期望多少个参数,意即形参的个数

length 是函数对象的一个属性值,指明该函数期望多少个参数,意即形参的个数。数量不包括剩余参数。相比之下,  arguments.length 是函数被调用时实际传参的个数。)

五、return

return语句也可以不带有任何返回值,在这种情况下,函数在停止执行后将返回undefined

return 不指定明确的值时,返回undefined

JavaScript Function arguments.callee caller length return的更多相关文章

  1. JavaScript中的arguments,callee,caller

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments: arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...

  2. 理解JavaScript中的arguments,callee,caller,apply

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

  3. JavaScript中的內定物件與函式: arguments, callee, caller, this, apply(), call()

    arguments, caller, callee, this都是用在函式(function)內的特殊內定物件.而apply()及call()則是用來呼叫函式的不同作法. arguments可用來取得 ...

  4. javascript 中的 arguments,callee.caller,apply,call 区别

    记录一下: 1.arguments是一个对象, 是函数的一个特性,只有在函数内才具有这个特性,在函数外部不用使用. 举例: function test(){   alert(typeof argume ...

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

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数.[function.]arguments[ ...

  6. JQuery Pagenation 知识点整理——arguments,callee,caller,apply应用(20150517)(转)

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

  7. javascript 中arguments.callee 调用自身

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

  8. 关于arguments.callee.caller.arguments[0]获得event的一些问题

    先从一个简单的例子说起,一个简单的button控件如下: < input  type ='button'  name ='mybtn'  id ='mybtn'  onclick ='myFun ...

  9. js arguments.callee & caller的用法及区别

    在函数内部,arguments.callee该属性是一个指针,指向拥有这个arguments对象的函数; 而函数对象的另一个属性:caller,这个属性保存着调用当前函数的函数的引用,如果是在全局作用 ...

随机推荐

  1. 移动app安全测试

    安全方面逐渐转向app安全,服务端app安全测试基本上跟常规的web方面挖掘差不多,只是增加了一个反编译或抓包的过程. 参考文献: http://drops.wooyun.org/tips/749 h ...

  2. Egret 学习之 从HelloWorld项目开始 (二)

    1,创建新项目HelloWorld ,可以在界面上点击文件->新建,也可以在命令行使用create: 2,src 目录,存放我们的代码.我们编写的代码都放在src目录下面. bin-debug ...

  3. spring security:ajax请求的session超时处理

    当前端在用ajax请求时,如果没有设置session超时时间并且做跳转到登录界面的处理,那么只是靠后台是很难完成超时的一系列动作的:但是如果后台 没有封装一个ajax请求公共类,那么在ajax请求上下 ...

  4. c#中命令copy已退出,返回值为1

    c#中命令copy已退出,返回值为1 本正经的道:董姐刚才你说的修心养性其中的'修心'我 有孕在身刚好由戴梦瑶顶替了她的位置按照的指示 ╋旆呆 湎术葶页 邾箕砜笳 烦璜卿廑 奶奶个腿儿的等下次非让你 ...

  5. postman+jenkins+newman做接口测试的持续集成

    为何要做接口自动化测试的持续集成? 1. 接口相对稳定,改动少,比起GUI自动化测试来说性价比更加高些,不容易出现GUI自动化那种掉到维护脚本的坑里. 2. 接口测试比较简单,一个规范的接口,测试只需 ...

  6. SQLServer性能优化

    http://www.cnblogs.com/studyzy/archive/2008/11/24/1339772.html

  7. Android实现动画循环的方式

    每次想到循环播放.重复执行时,脑海中总是冒出在while(true)的实现方式. Thread thread = new Thread(new Runnable(){ public void run( ...

  8. iOS 富文本点击事件

    #import "ViewController.h" #define font 17 @interface ViewController ()<UITextViewDeleg ...

  9. 10676 涂鸦跳跃(sort)

    10676 涂鸦跳跃 该题有题解 时间限制:1000MS  内存限制:65535K提交次数:240 通过次数:19 题型: 编程题   语言: G++;GCC Description 你玩过曾经风靡一 ...

  10. HDU 3362 Fix(状压dp)

    Fix Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...