JavaScript的内存管理

一、JS的数据类型

基本数据类型:String、Number、Boolean、undefined、null、Symbol(ES6)、BigInt(ES10)

引用数据类型:Object(包括Array、Function和如RegExp、Date、Math等内置对象)。

1.两种数据类型的区别

1.1基本数据类型

1、存储于栈内存中。
2、值不可变

let number = 10; // 变量number指向内存中的地址A,地址A中存储着值10  
console.log(number); // 输出10  
  
number = 20; // 变量number现在指向内存中的新地址B,地址B中存储着值20,同时地址A中的值10保持不变,但此时已无法通过变量number访问它  
console.log(number); // 输出20

3、创建变量时,直接存储变量的值,只要值相等,变量的内就相等。

let a = '1';  
let b = '1';  
console.log(a === b); // 输出 true
1.2引用数据类型

1、存储于堆内存中。
2、属性值是可变的。

// 创建一个对象,并将其引用赋给变量obj,此时obj指向内存中的地址A,地址A中存储着对象{name: 'Jack'}  
const obj = {
   name: 'Jack'};  
// 输出变量obj所引用的对象,即输出地址A中的对象  
console.log(obj); // 输出:{name: 'Jack'}  
  
// 修改变量obj所引用的对象的name属性为'Alice',此时地址A中的对象内容被改变,但地址A保持不变,obj仍然指向它  
obj.name = 'Alice';  
// 再次输出变量obj所引用的对象,即再次输出地址A中的对象,此时对象的name属性已经被修改  
console.log(obj); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eyuiomvtywn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值