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属性,不管援用函数运用的是什么名字,都能够保证一般完成递归挪用。