js基础总结(二)数据,变量及内存
1.什么是数据?
*存储在内存中代表特定信息的数据,本质上是二进制0101...
*具有可读和可传递的基本特性。
*数据的特点:可传递, 可运算。
*一切皆数据,函数也是数据。
*内存中所有操作的目标:数据
算术运算,逻辑运算,赋值,调用函数参数
2.什么是内存?
*内存条通电后产生的可储存数据的空间(临时的)
*内存产生和死亡:内存条(电路版)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失
*内存的空间是临时的,而应硬盘的空间是持久的。
*分配内存:声明变量和函数或创建对象时,JS引擎会自动为此分配一定大小的内存来存放对应的数据。
*释放内存:清空内存数据,标识内存可以在分配使用(内存不释放就不能复用)。
*自动释放:栈空间的局部变量。
*垃圾回调器回调:堆空间的垃圾对象。
* 一块小内存的2个数据
*内部存储的数据(一般数据/地址数据)
*内存地址值数据
*内存分类
栈:全局变量/局部变量(空间较小)
堆:对象(空间较大)
3.什么是变量?
*值可以变化的量,由变量名和变量值组成。
*每个变量都对应的一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的内容。
4.内存,数据,变量三者之间的关系
*内存是一个容器,用来存储程序运行需要操作的数据。
*变量是内存的标识,我们通过变量找到对应的内存,进而操作(读/写)内存中的数据。
问题:var a = xxx, a内存中到底保存的是什么?
xxx是基本数据,保存的就是这个数据。
xxx是对象,保存的是对象的地址值。
xxx是一个变量, 保存的xxx的内存内容(可能是基本数据,也可能是地址值)。
//例1 var obj1 = {name : 'Tom'}; var obj2 = obj1; obj2.age = 12; console.log(obj1.age); // Tom function fn(obj){ obj.name = 'A' } fn(obj1) console.log(obj2.name); //A //例2 var a = {age:12}; var b= a; a = {name: 'Bob', age: 13}; b.age = 14; console.log(b.age, a.name, a.age); //14, Bob, 13 function fn2(obj){ obj = {age: 15} } fn2(a); console.log(a.age); //13
问题: JS 引擎如何管理内存?
1.内存生命周期
*分配内存空间;
*使用分配到的内存;
*释放内存空间。
2.释放内存
*全局部变量:为执行函数分配的栈空间内存,函数执行完自动释放。
*对象:为对象分配对空间内存,当内存没有引用纸指向时,会成为垃圾对象=>垃圾回收器回收=>释放此内存。
下一篇随笔内容:对象
浙公网安备 33010602011771号