数据、变量、内存(相关问题)- 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引擎如何管理内存?
内存生命周期
-
分配内存空间,得到其使用权
-
存储数据,进行数据操作
-
释放空间
释放内存
-
局部变量: 函数执行完自动释放
-
对象: 成为垃圾对象,并由某一时刻垃圾回收器回收
函数里面的变量自动释放,如果变量为引用变量,即该变量的数据(对象)由某一时刻的垃圾回收器回收

浙公网安备 33010602011771号