美文网首页
js关于内存空间以及相关知识点(上)

js关于内存空间以及相关知识点(上)

作者: a4316976150e | 来源:发表于2017-02-19 00:06 被阅读0次

                                                         栈内存存取示意图

    栈内存的存取方法就好像一个兵乓球盒子,第5 个球肯定是最后放入的,也是要最先使用的,如果要使用第1个球,那要先将第一个球上面的所有球释放使用掉。栈内存的使用方式是"先进后出,后进的先出"。

    堆内存的方式就好像书和书架的关系,只要知道书的名字,就可以自由去书架上寻找相对应的书。

    基本数据类型和引用数据类型

    js有六种基本数据类型,分别为:String,Number,Boolean,Null,Undefined。基本数据类型是按值来保存的,所以我们可以直接操作保存在变量当中的基础对象的值。

    js有三种引用数据类型,分别为:Object,Function,Array.引用类型是按堆内存来保存的,变量保存一个引用数据类型会将值保存到堆内存当中。js不允许直接操作保存在堆内存当中的值,所以我们实际操作的是堆内存的一个引用而已。所以我们操作一个引用类型的值时,是先获取它保存在堆内存当中的引用,然后根据引用去获取堆内存的值。

    执行上下文

    js当中当遇到一个可执行的代码块时,会进入一个执行上下文,意思就是它的当前的可执行坏境。也就是会创建一个作用域。可执行的代码块有三种情况

    1;全局环境   //当执行代码时,最先进入全局环境

    2;函数环境  //当一个函数被调用执行时,会进入它的局部函数环境

    3;evel;

    当代码在执行过程中,遇到以上三种情况时,会进入一个执行上下文,将其放入栈中,当处于栈顶中的执行上下文执行完毕后,会从栈中弹出。以下是例子

    上面的例子中,首先入栈的是全局环境,然后执行中碰到了changeColor函数,然后changeColor入栈,

    然后执行changgeClolor函数的时候碰到了swap函数,swap函数入栈。当swap函数执行完毕后,出栈,然后changeColor函数出栈。当浏览器关闭之后,全局环境出栈。

    注意,函数当遇到return时,会直接将当前上下文弹出栈。不会继续执行

    执行上下文的几个关键点

    1,全局上下文只有一个,

    2;单线程

    3,函数的执行上下文是没有个数限制的

    4,当一个函数执行时,会创建一个执行上下文,即使时它自己本身的函数被调用。

    相关文章

      网友评论

          本文标题:js关于内存空间以及相关知识点(上)

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