一、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. github上前100的ios项目

    1. AFNetworking    作者是 NSHipster 的博主, iOS 开发界的大神级人物, 毕业于卡内基·梅隆大学, 开源了许多牛逼的项目, 这个便是其中之一, AFNetworking ...

  2. 杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用

    杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用 下载地址:http://files.cnblogs.com/guobaPlayer/%E8%93%9D%E6%9D%BEUSB%E4%B ...

  3. nsstring遍历汉子

    NSString *mytimestr=@"好人一生平安"; size_t length = [mytimestr length]; ; i < length; i++) { ...

  4. linux提示语言包

    locale -a 查看可用的语言包.选择中文语言包 echo 'LC_ALL="zh_CN.utf8"' >> /etc/profileecho 'export LC ...

  5. 《精通CSS》——个人总结

    [属性选择器] 属性选择器可以根据某个属性是否存在或属性的值来寻找元素. 只有在规定了 !DOCTYPE 时,IE7 和 IE8 才支持属性选择器.在 IE6 及更低的版本中,不支持属性选择. 事例: ...

  6. ARM应用调试思路、方法总结、笔记

    一.应用调试1:使用strace命令来跟踪系统调用 二.应用调试2:使用GDB来调试应用程序 编译gdb,gdbservertar xjf gdb-7.4.tar.bz2cd gdb-7.4/./co ...

  7. MQ队列堆积太长,消费不过来怎么办(转)

    转自:http://windwrite.com/archives/603 我们现有的业务就面临此问题,消息生产太快,消费不过来,导致队列堆积很长,把服务器内存耗尽,这时RabbitMQ的处理能力很低下 ...

  8. NDK常见错误

    1.错误1: android mk文件没有定义 $ ndk-buildAndroid NDK: Your APP_BUILD_SCRIPT points to an unknown file: /cy ...

  9. 如何在sublime中使用sass

    搞了好久,终于把sass搞定了. 最开始,我是想使用koala来实现对sass的实时编译的,但是每当我保存的时候,总是弹出erro错误,即无法编译生成css文件,百度了半天,问了好久,这个问题还是没能 ...

  10. css ::before和::after伪元素的用法

    css ::before和::after伪元素的用法:http://blog.dimpurr.com/css-before-after/