高程第七章:函数表达式

   定义函数的方法有两种:函数声明式(存在函数声明提升),另一种是函数表达式(匿名函数)

   函数递归:函数通过名字调用自身

  经典递归阶乘:

  function factorial(num){

    if( num<=1){ return 1 ;}

    else

    { return num*factorial(num-1)};

}

  下面的代码会导致出错:

  var anotherFactorial = factorial;

  factorial =null;

  alert ( anotherFactorial(4) )

   使用 argument.callee(ps: 是一个正在执行的函数的指针) 可以解决问题

    function factorial(num){

      if(num<=1){

      return 1;

}   else{

    return num*argument.callee( num-1 );

 }

}

  在严格模式下,不能通过脚本访问 argument.callee,可以通过使用命名函数表达式来形成相同的效果 

    var factorial = (function f ( nun) {

      if ( num<=1){

        return 1;

}

    else { return num*f(num-1) };

})();

 

posted @ 2017-09-09 19:36  竹仪  阅读(64)  评论(0)    收藏  举报