这里拿递归函数做例子: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>test</title></
这里拿递归函数做例子:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>test</title></head><body> test</body><script> function factorial(num){ if(num <= 1){ return 1; }else{ return num * factorial(num - 1); } } console.log(factorial(5)); //定义阶乘函数一般都要用到地柜算法;如上面的代码所示,在函数有名字,而且名字以后也不会 //变的情况下,这样定义么有问题。但问题是这个函数的执行与函数名factorial紧紧耦合在一起了。 //为了消除这张哦那个紧密耦合的现象,可以像下面这样使用arguments.callee. function factorial(num){ if(num <= 1){ return 1; }else{ return num * arguments.callee(num - 1); } } console.log(factorial(5)); //在函数内部,有两个特殊的对象:arguments和this。arguments的用途是保存函数参数,但这个 //对象还有一个名叫callee的属性,改属性是一个指针,指向拥有这个arguments对象的函数。</script></html>