Js内存管理

内存的存在方式

  • 栈内存和堆内存。栈内存存放的是值类型,而堆内存存放的是引用类型。

  • 函数的调用、参数、变量都是放在栈内存中的,在函数调用结束之后就会释放。引用类型在栈内存中存放的是指向堆内存的引用。

  • 栈内存中的原始值一旦确定就不能被更改(不可变的):
    定义一个原始类型变量时,在栈内存中激活一块内存。let a=“abc”
    更改原始类型变量值时,也会激活一块内存。 a=“edf”
    将原始变量赋值给另一个新的变量时,也会激活一块内存。 let b=a

  • 栈内存中的对象引用是可以被更改的(可变的):
    把引用类型变量赋值给另一个变量时,会将源变量指向栈内存中的对象引用赋值到新变量的栈内存中,所以只是在复制了个对象引用,并没有在堆内存中生成一份新的对象。
    let a={name=“pp”};
    let b=a;

  • 当我们给引用类型变量分配一个新对象时,会修改栈内存中的引用,新的引用指向堆内存中新的对象。
    a={name=“ππ”};

  • 当我们比较引用类型变量时,实际上是比较栈内存中的引用。只有引用相同变量时才相等。
    即使看起来完全一样的引用类型变量,只要他们引用的不是同一个值,他们就是不一样。
    let a={name:“pp”}
    let b={name:“pp”}
    a!=b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值