美文网首页前端开发那些事儿
js中基本数据类型与引用数据类型在内存中如何存储

js中基本数据类型与引用数据类型在内存中如何存储

作者: 郭_小青 | 来源:发表于2021-03-17 10:12 被阅读0次

内存分为栈内存与堆内存

一、基本数据类型(number、string、boolean、null、undefined)

每定义一个变量就会在栈里面开辟一块新的内存空间

let  a = 123
let b = a
a = 456
console.log(a)  // 456
console.log(b)  // 123

基本数据类型是在栈内存中存储的

image.png

二、引用数据类型

复杂数据类型在声明之后, 会在堆内存中开辟出一块空间, 用来存放数据, 拿对象举例, 在我们新建一个对象之后, 会在堆内存中开辟一块空间, 用来存放对象里的数据, 而复杂数据类型跟简单数据类型的不同点就是在于, 简单数据类型的变量指向的是内存中的数据, 而复杂数据类型指向的是其在内存中的地址,通过这个地址, 从而拿到地址中的数据, 因此, 如果将一个对象赋值给另一个对象的时候, 其实是把这个对象在内存空间中的地址传递给了另一个对象, 此时, 他们共享内存中的同一块空间以及空间里的数据, 如果对其中一个对象的一个属性进行修改的话, 那么因为两个对象是共享一块地址一个数据的, 因此另一个对象中的属性也会被改变. 如果对其中一个对象重新赋值的话, 那么这个对象就会指向另一块内存空间, 就不在与另一个对象共享同一块内存了。

let obj = { name: '张三' }
let obj1 = obj
obj1 = { name: '李四' }
console.log(obj.name)  // 李四
console.log(obj1.name)  // 李四

引用数据类型的实例存储在堆中, 其相关变量存储在栈中。 不同的变量可以指向堆中的同一实例

image.png
image.png

相关文章

  • 什么是深拷贝?什么是浅拷贝?如何实现一个深拷贝函数?

    在JS中,数据类型分为基本数据类型和引用数据类型两种,对于基本数据类型来说,它的值直接存储在栈内存中,而对于引用类...

  • js传参之值传递

    js数据存储方式 js中基本数据类型是存放在栈中;引用数据类型存在堆中,栈中会有一个内存空间存放引用数据类型的地址...

  • JavaScript中的变量在内存中的具体存储形式

    js变量类型分为基本数据类型和引用数据类型。 基本数据类型,内容存储在栈内存当中,通过值进行访问。 引用数据类型,...

  • JS的一些面试点

    JS 数据类型 JavaScript中什么是基本数据类型什么是引用数据类型?以及各个数据类型是如何存储的? 基本数...

  • JavaScript基础学习-详解数据类型

    数据类型 JS中的数据类型分为2种:原始数据类型(基本数据类型)、引用数据类型。二者的区别在于在内存中存储位置不同...

  • JS深浅拷贝

    JS存储方式 JS中存在基本数据类型和引用数据类型1.基本数据类型:number,string,boolean,n...

  • 面试题:深拷贝和浅拷贝(重点)

    一、数据类型存储 基本类型(保存在栈内存中) 引用类型(保存在堆内存中,引用数据类型的变量是一个指向堆内存中中实际...

  • {}=={},{}==!{}与[]==[],[]==![]

    js中基本数据类型和引用数据类型基本类型:存放在栈内存中,数据大小确定,内存空间大小可以分配引用类型:存放在堆内存...

  • 入坑前端08:JS 里的数据存储和赋值

    上一章讲过JS里的数据类型转化,这一章来聊聊JS如何存数据以及如何转化数据。 ●基本数据类型是存储在栈内存中。 ●...

  • 六、内存剖析

    C#将数据分为两种:值数据类型和引用数据类型,这两种数据类型存储在内存中的不同的地方:值数据类型存储在栈中,而引用...

网友评论

    本文标题:js中基本数据类型与引用数据类型在内存中如何存储

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