本文共 1015 字,大约阅读时间需要 3 分钟。
数据、内存、变量的概念及三者之间的关系
数据是什么
数据就是存储在内存中代表特定信息的东西。从底层来看,数据本质上就是许多个0和1组成的。
数据的特点
数据具有可传递性和可运算性。例如:
可传递
var a = 123var b = 123
可运算
var a = 123a += 1
内存是什么
内存是电脑硬件中的内存条在通电后产生的可以用于储存数据的空间,这些空间是临时的(在断电后空间会消失,数据会丢失)。内存的生命周期与内存条的通电状态密切相关。
内存的管理
栈内存与堆内存的作用
栈内存主要存储全局变量、局部变量等基本类型数据。堆内存则用于存储各种对象。
JS引擎如何管理内存
内存的释放机制
变量是什么
变量用于存储可以变化的值。每个变量都对应一块内存,内存地址唯一标识变量,变量名用于查找对应的内存存储数据。
变量的存储方式
普通类型变量
var a = 123console.log(a)
此时栈内存中开辟了一块存储123的值,变量a对应这块内存。
引用类型变量
var obj = {name: 'Fitz'}console.log(obj) 此时栈内存中开辟了一块存储变量名obj的内存,堆内存中则开辟一块存储对象的内存。
数据、内存、变量的关系
内存用于储存数据,变量作为标识符用于找到对应的内存空间,从而读取数据。
函数传递方式究竟是值传递还是引用传递
实际上,无论变量值是普通类型还是引用类型,函数参数的传递都是基于值的机制。
值传递与引用传递的区别
例如:
var a = 1var obj = {name: 'Fitz'}function func1(a) { a = a + 1 }function func2(obj) { console.log(obj.name); obj = {name: 'Lx'}; console.log(obj.name) }func1(a) // a变量的值被传递为1func2(obj) // obj变量的值(内存地址)传递给函数 在这种情况下,函数内部对对象的修改不会影响外部的对象值。
转载地址:http://odnuz.baihongyu.com/