• JS中的一些概念的整理及理解


    先看看函数定义时发什么什么?

    函数定义时就确定了其作用域和作用域链。

    执行时创,无法访问建执行环境(execution),执行时相当于实例化了一发。除了执行环境当然有作用域链,这时会将实例化的对象(也就是活动对象推入顶端,就是第0号位置),其他的作用域链继承定义时的作用域链。

    红皮书中是这样写的:执行环境定义了变量和函数有权访问其他数据,决定他们各自行为。每个执行环境中都有一个变量对象,环境中定义的变量和函数都保存在这个对象中,无法访问。

    当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的最前端始终是当前执行代码所在环境的变量对象。如果这个环境是函数,将其活动对象作为变量对象。

    活动对象最初只包含一个对象:arguments对象。

    偶然还看到了JS中没有块级作用域这个概念。

    实现这个样子的

     for(var i=0;i<10;i++){
    //dosth(i);
    }
    console.log(i);

    这个会出来10的!!!!   fuck   执行完这个i  也会出现在循环外的执行环境中   真是日了动物园。由此应该很能简单的理解那个闭包经典例子。

    function closure(){
    var arr=new Array();
      for(var i=0;i<10;i++){
        arr[i]=function(){
        return i;
        };
      }
      return arr;
    }

    然而书上说运出来是 十个10 

    搞不懂了  先扔这里。

    下面来看看闭包的概念啊

    又来抄书了

    红皮书上是这什么说的:有权访问其他函数作用域中变量的函数。

    闭包创建方式:在一个函数内再创建一个函数。

    在一个函数内部定义的函数会将外部函数的活动对象添加到他的作用域链中。

    外部函数返回后,作用域链会被销毁,但内部函数仍在引用其活动对象,活动对象不会被销毁。

    差不多好像就这些   这篇博客比较详细

    http://www.cnblogs.com/lhb25/archive/2011/09/06/javascript-scope-chain.html

    下篇整理下对原型的理解。

  • 相关阅读:
    倒排索引在MYSQL,PostgreSQL,ElasticSearch中的设计思想
    MySQL Group Replication: What Is It? Replicated Database State Machine & Paxos implementation
    Redis 6.0 docker Cluster
    What is the "Docker Subnet" used for?
    Windows MYSQL 8.0 或者 5.7 查找my.ini 修改端口号
    Kerberos Network Authentication Service Window & Mac
    协合新能源集团有限公司 | 红海 eHR BPMN
    基于 springBoot 实现webSocket方式的扫码登录
    Python中IO编程-StringIO和BytesIO
    Neo4j基本入门
  • 原文地址:https://www.cnblogs.com/liuestc/p/4658627.html
Copyright © 2020-2023  润新知