栈与堆,简单数据类型与复杂数据类型

1、简单数据类型:如字符串、数值等

  • 在内存中是以栈的形式存放的。

2、复杂数据类型:如数组、对象。

  • 在内存中是以堆的数据结构存放的。

3、栈的特点是:1、速度快;2、栈中直接存储变量的值。

  • 即栈是传值操作。变量赋值是直接将值复制一份,因此,前一个变量被重新赋值,并不会影响后来变量的值。
    var name = "zhangsan";
    var name1 = name;   //简单数据类型是栈存放,是传值操作。即直接复制一份给了name1.

    name = "lisi";

    console.log(name);  //lisi
    console.log(name1); //zhangsan

4、堆的特点:1、速度慢;2、访问堆,需要先访问栈中该堆的地址(形象的说就是房间号,通过这个房间号才能找到堆)。

  • 即堆是传址操作。因此,改变堆的值,所有引用该堆的变量的值都会发生改变。

因为栈中存放的是堆的地址,因此复杂数据类型的赋值,是将堆的地址重新复制一份给新的变量,等于没变,因为2个地址指向的是同一个堆空间。
而复杂数据类型的赋值操作,直接修改的是堆的内容,因此所有引用这个堆的变量的值都会跟着发生改变。

    var a = {name:"zhangsan", age:18};  //这是复杂数据类型,堆存放。
    var b = a;

    a.name = "lisi";
    console.log(a);     //{name: "lisi", age: 18}
    console.log(b);     //{name: "lisi", age: 18}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容