• 函数表达式-递归


    递归

    递归函数是在函数通过调用自身的情况下构成的

    1     function factorial(num){
    2         if (num <=1){
    3             return 1;
    4         } else {
    5             return num * factorial(num-1);
    6         }
    7     }

    这是一个经典的递归阶乘函数,但是下面的代码会让它出错

    1     var anotherFactorial = factorial;
    2     factorial = null;
    3     console.log(anotherFactorial(4));//factorial is not a function

    在执行anotherFactorial()函数时,factorial已经不是函数了

    arguments.callee是一个指向正在执行的函数的指针,因此何以用它来实现对函数的递归调用

    1     function factorial(num){
    2         if (num <=1){
    3             return 1;
    4         } else {
    5             return num * arguments.callee(num-1);
    6         }
    7     }

    但是在严格模式下,不能通过脚本访问arguments.callee,访问这个属性会导致错误。不过,可以使用命名函数表达式达成相同的结果

     1     var factorial = (function f(num){
     2         if (num <= 1){
     3             return 1;
     4         } else {
     5             return num * f(num -1);
     6         }
     7     });
     8 
     9     var anotherFactorial = factorial;
    10     factorial = null;
    11     console.log(anotherFactorial(4)); //24
    不要在该奋斗的年纪而选择了安逸
  • 相关阅读:
    关于trunk、access以及hybrid的一些简单知识
    EasyUI 创建对话框
    EasyUI Window和Layout
    EasyUI 异步Tree
    EasyUI 创建Tree
    EasyUI Tree添加节点
    EasyUI Ajax 表单
    EasyUI Tree checkbox node
    EasyUI 表单 tree
    EasyUI DataGrid合并单元
  • 原文地址:https://www.cnblogs.com/qqandfqr/p/5720345.html
Copyright © 2020-2023  润新知