js中赋值和变量的问题
Posted 简单的小伙子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中赋值和变量的问题相关的知识,希望对你有一定的参考价值。
问题:var a = xxx,a内存中到底保存的是什么?
赋值和变量的问题
问题:var a = xxx,a内存中到底保存的是什么?
// 问题:var a = xxx,a内存中到底保存的是什么?
/*
* XXX是基本数据,保存的就是这个数据
* XXX是对象,保存的是对象的地址值
* XXX是一个变量,保存的XXX的内存内容,(可能是基本数据,也可能是地址值)。
*/
/*
*
关于引用变量赋值的问题
多个引用变量指向同一个对象,那么这多个变量储存的是地址值。指向同一个对象,通过一个变量次改对象内部数据,另外一个变量看到的是修改之后的数据。
2个引用变量指向同一个对象,让其中一个引用变量指向另外一个对象,另一引用变量依然指向前一个对象
*/
var a = {age:120};
var b= a;
a = {name:'test',age:13};
console.log(b.age,a.name,a.age) // 120 test 13 相当于把对象a给重新赋值了,并且这个值是对象。
// 这里对对象中指向做了一个处理,并不是对象中的属性值做了一个处理,所以这个要好好理解下,容易出问题。
function fn2(obj){
obj = {age:15}
}
fn2(a);
console.log(a.age)// 120
// 在js中调用函数传递变量的时候,是值传递还是引用传递
//在函数内部的时候,基本都是对变量有两个操作,就是变量的读取和写入,就是读取内存中的变量,然后进行操作(就是写入)。
// 理解1,都是值传递,一种是基本值,一种是地址值。
// 理解2,基本数据类型,是值传递,对象是引用传递。引用的地址的值,存在栈内存中的地址。
问题:js引擎如何管理内存?
1、内存的生命周期
* 分配小内存空间,得到它的使用权,
* 储存数据,可以反复进行操作
* 释放小内存空间
2、释放内存
* 局部变量,函数执行完,就会自动释放
* 对象:成为垃圾对象===>垃圾回收机制回收
局外知识,局部变量,只有函数在执行的时候,才加载到内存中,函数中所有代码执行结束之后,然后函数中的内存变量会自动释放。
以上是关于js中赋值和变量的问题的主要内容,如果未能解决你的问题,请参考以下文章