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中赋值和变量的问题的主要内容,如果未能解决你的问题,请参考以下文章

js中赋值和变量的问题

0090 JS变量的使用:声明赋值初始化语法扩展命名规范

js中的var是啥意思,

js设置全局变量ajax中赋值

JS变量的连续赋值

js中undefined和null的区别