1.什么是数据?
- 数据就是存储在内存中代表特定信息,本质上是0101...
-
数据特点 :可传递, 可运算
- 内存中所有操作的目标: 对数据的操作
- 算术运算
- 逻辑运算
- 赋值
- 运行函数
-
什么是内存?
-
内存就是RAM 就是我们现在所说的内存条,程序再运行的过程当中会被加载到内存中去。然而我们的硬盘是存储数据的。
- 硬盘和内存的区别:
- 内存的读取的速度比硬盘的快,所以我们的数据是内存中运行,在程序运行完毕后数据会自动消失。
(特点:断电后数据消失) - 硬盘是永久存储数据的地方,他的读取速度是不够内存快的。
**(特点:断电后数据不消失,除非人为删除。) **
- 内存的读取的速度比硬盘的快,所以我们的数据是内存中运行,在程序运行完毕后数据会自动消失。
- 硬盘和内存的区别:
-
内存条通电后产生的可储存数据的空间(临时的)
-
内存产生和死亡: 内存条(电路版)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失
-
在我们的JS中,一块内存存储两个数据
- 内部存储的数据
- 地址值
-
内存分类
1.栈内存: 全局变量/局部变量
(也为两部分:第一部分为变量名。第二部分为值)
2.堆内存: 对象
如图
01.png
02.png
03.png
04.png
什么是变量?
- 可变化的量, 由变量名和变量值组成
- 每个变量都对应的一块小内存, 变量名用来查找对应的内存, 变量值就是内存中保存的数据
内存,数据, 变量三者之间的关系
- 内存用来存储数据的空间
- 变量是内存的标识
相关问题
问题: var a= xxx; 问a内存中到底保存的是什么?
- 如果xxx是基本数据, 保存的就是这个数据。
- 如果xxx是对象, 保存的是对象的地址值。
- 如果xxx是一个变量, 保存的xxx的内存内容(可能是基本数据, 也可能是地址值)
关于引用变量赋值问题
- 2个引用变量A,B指向同一个对象, 通过A变量修改对象内部数据, B变量看到的是修改之后的数据
- 2个引用变量A,B指向同一个对象, 让A引用变量指向其他对象, B引用变量依然指向原来对象
var obj1 = {name:"小明"};
var obj2 =obj1;
obj1.name = "小红";
console.log(obj2.name); // 小红
obj1={age:15}; #此时,只有obj2 指向{name:'小红'} obj1此时指向新的对象
console.log (obj1.name) // undefined
console.log (obj2.name) // 小红
问题: 在js调用函数时传递变量参数时, 是值传递还是引用传递
- 理解1: 都是值(基本/地址值)传递
- 理解2: 可能是值传递, 也可能是引用传递(地址值)
问题: JS引擎如何管理内存?
- 内存生命周期
- 分配小内存空间, 得到它的使用权
- 存储数据, 可以反复进行操作
- 释放小内存空间
- 释放内存
- 局部变量: 函数执行完自动释放
- 对象: 成为垃圾对象==>垃圾回收器回收
网友评论