发表于: 2017-02-21 01:02:22

0 1184


今天完成的事情:

      看了红宝书,内存空间、执行上下文、变量对象

明天计划的事情:

      继续看闭包,作用域链,开始海川项目

遇到的问题:  

     闭包几个例子还是不理解,还需要好好看看作用域链

收获:

    内存空间管理:js具有自动垃圾收回机制,所以我们在开发时不用关心内存的使用问题,内存的分配与回收都完全实现了自动管理。

     js内存生命周期:1、分配你所需要的内存  2、使用分配到的内存(读、写)3、不需要时将其释放归还

     在局部作用域中,当函数执行完毕,局部变量也就没有存在的必要了,因此垃圾收集器很容易作出判断并回收。但是全局变量什么时候需要自动释放内存空间则很难判断,因此在我们的开发中,需要尽量避免使用全局变量,确保性能问题。

变量对象与基础数据类型:

    js执行上下文生成后,会创建一个叫做变量对象的特殊对象。js的基础数据类型往往都保存在变量对象中。

    基础数据类型:undefine、null、string、number、 boolean,基础数据类型都是按值访问,因为我们可以直接操作保存在变量中实际的值。

引用数据类型与堆内存:在操作对象时,实际是操作对象的引用而不是实际的对象。因此,引用类型的值都是按引用访问的。
    在变量对象中的数据发生复制行为时,系统会自动为新的变量分配一个新值

    引用类型的复制同样也会为新的变量自动分配一个新的值保存在变量对象中,但不同的是,这个新的值,仅仅只是引用类型的一个地址指针。

执行上下文( Execution Context):每次当控制器转到可执行的代码的时候,就会进入一个执行上下文。执行上下文可理解为当前代码的执行环境,它会形成一个作用域。

执行上下文的一些总结:

1、单线程
2、同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待
3、函数的执行上下文的个数没有限制
4、每次某个函数被调用,就有会有个新的执行上下文为其创建,即使是调用的自身函数,也是如此



返回列表 返回列表
评论

    分享到