一、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. 关于CSRF的攻击

    CSRF攻击的原理: 1.当用户成功登陆网站A时,浏览器纪录本次会话cookie. 2.未退出网站A,点击了恶意网站B上的图片或者其他诱骗信息. 3.恶意网站B上的诱骗信息超链接到了网站A上面,冒充用 ...

  2. AJAX在Struts2中使用

    前台页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

  3. 《JavaScript DOM编程艺术》读书笔记

    这是自己JS入门的一本书,反复看过几遍,作者的文笔风趣,阅读起来不枯燥也显轻松~ 本书从JS简史讲到基础语法到DOM,再以一个图片库案例为主线,讲如何运用JS来实现想要的动效,同时对已写案例进行兼容优 ...

  4. java学习开题

  5. Python学习之旅--第二周--元组、字符串、运算、字典

    一.元组 另一种有序列表叫元组:tuple.tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: # Author:Tim Gu tuple = (" ...

  6. JWT 多网站单点登录,放弃session

    多个网站之间的登录信息共享, 基于cookie - session的登录认证方式跨域等比较复杂.采用基于算法的认证方式, JWT(json web token)的方式. --------------- ...

  7. HDU 1847 Good Luck in CET-4 Everybody! 博弈

    题目思路: 写出SG函数(1表示先手胜,0表示先手负) 110110110110-- 发现n%3==0时,Cici胜 #include<stdio.h> #include<strin ...

  8. rsync 断点续传

    # rsync -avzP file root@172.20.7.219:/root/tmp           (我这里file指要传送的文件)

  9. git clone出现SSL错误

    在学习git的时候,发现不能使用git clone从github.com下载,报了个ssl错误. Cloning into cancan... error: SSL certificate probl ...

  10. python操作---RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...