美文网首页
js中闭包和递归的概念和案例

js中闭包和递归的概念和案例

作者: SuYongZhi | 来源:发表于2018-11-22 22:23 被阅读0次

    闭包

    闭包的概念: 函数A中,有一个函数B,函数B中可以访问函数A中定义的变量或者数据,此时就形成了闭包(这句话暂时不严谨)
    闭包的模式: 函数模式的闭包,对象模式的闭包
    闭包的作用:缓存数据,延长作用域链
    闭包的优点和缺点:缓存数据

    函数模式闭包案例:

    function f1() {
        var num = 10;
        function f2() {
        console.log(num);
    }
    f2();
    }
    f1();
    

    对象模式闭包:

    function f3() {
        var num = 10;
        var obj = {
        age:num
    };
    console.log(obj.age);
    }
    f3();
    

    递归

    递归:函数自己调用自己,此时就是递归,递归一定要有结束的条件

    var i = 0;
    function f1() {
      i++;
      if (i<5) {
      f1();
    }
    console.log("这是递归输出,函数自己调用自己!");
    }
    f1();
    

    递归案例:

    递归实现求N个数字的和
    function getSum(x) {
        if (x==1) {
        return 1;
    }
    return x + getSum(x-1);
    }
    console.log(getSum(100));
    }())
    
    求一个数字各个数上的数字的和
    function getEverSum(x) {
        if (x<10) {
        return x;
    }
    return x%10 +  getEverSum(parseInt(x/10));
    }
    console.log(getEverSum(520));
    
    求斐波那契数列
    function getFib(x) {
        if (x==1 || x==2) {
        return 1;
    }
    return getFib(x-1)+getFib(x-2);
    }
    console.log(getFib(12));
    

    最后分享一句超级演说家崔万志说过的话:抱怨没有用,一切靠自己!

    相关文章

      网友评论

          本文标题:js中闭包和递归的概念和案例

          本文链接:https://www.haomeiwen.com/subject/oegrqqtx.html