arguments
在函数被调用时,会自动在该函数内部生成一个名为 arguments的隐藏对象
.该对象类似于数组,但除了长度
之外没有任何数组属性.可以使用[]操作符获取函数调用时传递的实参
.
1 | (function () { |
转换为数组
1 | //ES6 |
属性
- arguments.callee 指向当前执行的函数
- arguments.length 实参长度(指向传递给当前函数的参数数量)
- arguments.callee.length 形参长度
arguments.callee 引用当前正在运行的函数,给匿名函数提供了一种自我引用的方法
- arguments.callee :初始值就是
正被执行的Function对象
,常用于匿名函数
1 | function a(x, y, z) { |
1 | function create() { |
Function.caller 返回调用指定函数的函数(调用函数的父函数)
- 返回一个对函数的引用,该函数调用了当前函数
- 非标特性,尽量不在生产环境中用它
- 在一个函数调用另一个函数时,被调用函数会自动生成一个caller属性,指向调用它的函数对象,如果该函数当前未被调用,则Function.caller为null
1 | function parentCheck() { |
如果一个函数f是在全局作用域内被调用的,则f.caller为null,相反,如果一个函数是在另外一个函数作用域内被调用的,则f.caller指向调用它的那个函数.
该属性的常用形式arguments.callee.caller替代了被废弃的 arguments.caller.
注意,callee和caller两个属性只有当函数在执行时才有用
- function.caller中 function是正在被执行的函数