数据、变量、内存(相关问题)- js基础深入

关于赋值和内存的问题

var a = xxx, a 内存中保存的是什么?

  • xxx是基本数据,保存的就是该数据

  • xxx是一个对象,保存的是地址值

  • xxx是一个变量,保存的是xxx的内存内容(可为基本类型数据和地址值)

关于引用变量赋值问题

  • 2个引用变量指向同一个对象

  • 由于引用变量指向同一个对象,对应堆里面同一个数据,当其中一个变量修改时,另一个变量也随其修改

  • 传递的是指针,不管在栈中如何传递,只要指针不改变,堆里的数据都不会受影响

var a = {age: 12}
function fn( obj ) {
  obj = {age: 15}
}
fn(a)
console.log(a.age) // 12

保存的是该变量的内存内容,即 obj = a,obj =

在js调用函数时传递变量参数时,是值传递还是引用传递

  • 值( 基本 / 地址值)转递

JS引擎如何管理内存?

内存生命周期

  • 分配内存空间,得到其使用权

  • 存储数据,进行数据操作

  • 释放空间

释放内存

  • 局部变量: 函数执行完自动释放

  • 对象: 成为垃圾对象,并由某一时刻垃圾回收器回收

函数里面的变量自动释放,如果变量为引用变量,即该变量的数据(对象)由某一时刻的垃圾回收器回收

posted @ 2021-07-18 15:17  独舟者  阅读(24)  评论(0)    收藏  举报