美文网首页
JS基本类型和引用类型的区别

JS基本类型和引用类型的区别

作者: jackie季 | 来源:发表于2018-08-07 13:31 被阅读0次

    当我们打开一个页面时,系统会为其分配一定的内存空间,这里面就包括了JS的内存区,JS内存区又分为代码区和数据区,顾名思义就是存代码和数据的区域,例如写入 var a = 1,那么a就存在了代码区,数字1就存在了数据区

    在数据区中,包括栈内存(Stack)堆内存(Heap)
    基本类型的数据就存在栈内存中,它们可以直接访问,是按照值进行分配的,可以直接操作栈内存空间的值

    var a = 1
    b = a
    console.log(a)  // 1
    console.log(b)  // 1
    b = 2   // 改变b的值对a没有影响
    console.log(a)  // 1
    console.log(b)  // 2
    



    除过上面的 6 种基本数据类型外,剩下的就是引用类型了,统称为 Object 类型
    引用类型的值是按引用访问的,它的值保存在堆内存中,栈内存中保存的是它的地址,该地址与堆内存中的值相关联

    var a = {name:"percy"};
    var b;
    b = a;
    a.name = "zyj";
    console.log(b.name);    // zyj
    b.age = 22;
    console.log(a.age);     // 22
    var c = {
      name: "zyj",
      age: 22
    }
    

    图解如下:


    image.png

    总结:

    栈内存 堆内存
    存储基础数据类型 存储引用数据类型
    按值访问 按引用访问
    存储的值大小固定 存储的值大小不定,可动态调整
    由系统自动分配内存空间 由程序员通过代码进行分配
    主要用来执行程序 主要用来存放对象
    空间小,运行效率高 空间大,但是运行效率相对较低
    先进后出,后进先出 无序存储,可根据引用直接获取

    相关文章

      网友评论

          本文标题:JS基本类型和引用类型的区别

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