arguments
arguments是一个类数组对象,包含着传入函数中的所有参数。虽然arguments的主要用途是保存函数参数,但是这个对象还有一个名叫callee的属性,该属性是一个指针,指明拥有这个arguments对象的函数。
例子:
function factorial(num){
if(num<=1){
return 1
}else {
return num * factorial(num-1)
}
}
上面的代码实现了阶乘函数的递归实现,但是这个函数的执行与函数名factorial紧紧耦合在了一起,如果出现下面这样的情况,就会出问题:
var fn = factorial
factorial = null
fn(10) // error: factorial is not a function
为了解决这种问题,可以使用arguments的callee属性:
function factorial(num){
if(num<=1){
return 1
}else {
return num * arguments.callee(num-1)
}
}
通过使用arguments对象的callee属性,无论引用函数使用的是什么名字,都可以保证正常完成递归调用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。