美文网首页
闭包/递归

闭包/递归

作者: 单只蝴蝶_569d | 来源:发表于2020-05-17 08:58 被阅读0次

// 递归

    function faciorial(num) {
        if (num < 10) {
            return num;
        } else {
            // argument.callee是一个指向正在执行的函数,但是再严格模式下会报错。可以使用函数表达式的方式
            return arguments.callee(num) * 2
        }
    }
    
    // 使用函数表达式实现递归
    const faciorial1=(function f(){
        if (num < 10) {
            return num;
        } elsec {
            return f(num) * 2
        }
    })

    faciorial(2)
    faciorial1(2)
     /**
      * 闭包 一个函数可以访问另外一个函数的变量可以称为闭包,如何形成的闭包?为什么一个函数会可以访问另外一个函数的变量?
      * 这个从作用域链说起,当一个函数被创建时,会创建一个执行环境和对应的作用域链,然后使用arguments和其他命名的参数来初始化活动对象
      * 再作用域链里,外部函数的活动对象始终第二位,外部函数的外部函数的活动对象再第三位。
      * faciorial 函数第一层活动是他本身里面包含 num和arguments。第二层活动对象则是全局函数。一般函数在执行完毕后,活动对象会被销毁
      * 然而闭包不同。闭包会将他可以访问的函数的活动对象加到自己的作用域链中。闭包执行完毕,起活动对象不会被销毁,只有取消对闭包对象的引用,
      * 可以销毁闭包对象
      **/
      function createFunctions(){
          var result=new Array();
         for(var i=0;i<10;i++){
              result[i]=function(){
                  return i; 
              }
         }
         return result; // 返回10 因为每个函数的作用域链中都包含着createFunctions的活动对象。
      }
  
      // 改写可以返回0 1的
      function createFunctionss(){
          var result=new Array();
         for(var i=0;i<10;i++){
              result[i]=function(num){
                  return function(){
                    return num;
                  }
             }
         }(i)
         return result; 
      }

相关文章

  • 函数表达式

    一、函数声明提升 二、递归 三、闭包(详见闭包)

  • 闭包/递归

    // 递归

  • 闭包,递归

    闭包 1.1变量的作用域复习 变量根据作用域的不同分为两种:全局变量和局部变量。 函数内部可以使用全局变量。 函数...

  • 递归和闭包实现斐波那契数列

    斐波那契数列,递归实现 闭包实现斐波那契数列,非递归

  • 闭包与递归

    1.什么是闭包 搞这些只为提高自己的记忆力,以后会不定期的发布声明在函数内部,可以访问函数内部的局部变量的一个函数...

  • 递归和闭包

    js变量的作用域:全局作用域(全局变量) : 在函数外面声明的变量**生命周期(变量从声明到销毁): 页面从打开到...

  • js高级之递归、闭包

    递归 递归指函数自己调用自己闭包指的是被函数分割形成的作用域,从而形成被保护的私有数据,这个被我们称之为闭包。在我...

  • js闭包 与事件队列

    针对闭包相信小伙伴们有很多不同的概念跟理解 何为闭包,从结构上来讲,闭包就是函数套函数,类似递归这种函数调用函数本...

  • JavaScript高级程序设计笔记7

    函数表达式 递归 闭包 (1)闭包与变量 (2)关于this对象 (3)内存泄漏 模仿块级作用域 私有变量 (1)...

  • 用arguments对象重写递归和闭包

    首先,本篇需要【闭包】【arguments】【递归】几个知识点,如果你都很熟悉,请跳过这三个链接。 有关【闭包】的...

网友评论

      本文标题:闭包/递归

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