今天小编主要是对数据,内存,变量这几个概念进行说明。内容是我最近所学到的,希望能跟大家分享下,若理解有误,还请各位指教一二。
什么是数据
- 存储在内存中代表特定的信息的东西,本质上是一串二进制组成的,如01110011....
- 数据的特点是:可传递(var a=2;var b=a;)、可运算
- 万物皆数据,函数也是数据
- 内存中所有操作的目标:数据(如能进行算术、逻辑、赋值、运行函数)
什么是内存
- 内存条通电后产生的可储存数据的空间(临时的)
注:内存空间是临时的,而硬盘空间是持久的 - 内存产生和死亡:内存条(电路版型)=>通电=>产生内存空间=>储存数据=>断电=>内存和数据消失
- 内存的分类
(1)栈:全局变量/局部变量
(2)堆:对象 - 一块小内存的2个数据:地址值+内部储存的数据
什么是变量
- 可变化的量,有变量名和变量值组成(例 var a=1)
- 每个变量都对应一块小内存,变量名用来查找对应的内存,变量的值就是内存中保存的数据
变量,数据,内存三者的关系
- 内存是用来存储数据的空间
- 变量是内存的标识
问题:var a=xxx,a内存中保存的是什么??
(1)当xxx是基本的数据,保存的就是这个数据
(2) 当xxx是对象,保存的是这个对象的地址值
关于引用变量赋值的问题
(1) n个引用变量指向同一个对象,其中一个变量修改对象的内容,其他变量看到的是改变后的数据
(2)2个n个引用变量指向同一个对象,让其中一个变量指向另外一个对象,另外一个引用变量依旧指向前一个对象
js调用函数是传递变量的参数时,是值传递还是引用传递??
理解1:都是值传递(基本数据/地址值)传递
理解2:可能是值传递,也可能是引用传递
Js引擎如何管理内存
1)内存生命周期
- 分配小内存,得到它的使用权
- 存储数据,可以反复进行操作
- 释放小内存空间
2)释放内存
- 局部变量:函数执行完立即释放
- 对象:成为垃圾对象=>垃圾回收器回收