1.什么是数据
存储在内存中代表特定含义的信息,本质上是010101…
2.什么是内存
可存储数据的空间(临时的)
3.什么是变量
可变化的量,由变量名和变量值组成
每个变量都对应一小块内存,变量名用来查找对应的内存,变量值就是内存中保存的变量
4.栈和堆
-
栈(stack):栈会自动分配内存空间,会自动释放,存放基本类型,简单的数据段,占据固定大小的空间。(基本类型:String,Number,Boolean,Null,Undefined)
-
堆(heap):动态分配的内存,大小不定也不会自动释放,存放引用类型,指那些可能由多个值构成的对象,保存在堆内存中,包含引用类型的变量,实际上保存的不是变量本身,而是指向该对象的指针。(引用类型:Function,Array,Object)
JS中的变量都是保存到栈内存中的
-
基本数据类型的值直接保存在栈内存中
值与值之间是相互独立的,修改一个变量不会影响其他变量值
-
引用数据类型(对象)是保存到堆内存中的,,每创建一个新对象,就会在内存中开辟一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个变量的引用,那么通过一个变量改变属性时,另一个变量也会收到影响
基本数据类型保存的是值,引用数据类型保存的是地址
-
当比较两个基本数据类型时,比较的就是值
-
当比较两个引用数据类型时,比较的是对象的内存地址,如果两个对象一样,但是内存地址不同,那么会返回false