基本类型/简单类型:number、string、boolean、undefined、null、symbol
复杂类型:object(1.狭义对象:object;2.数组array;3.函数:function)
关于内存
基于已有的一个内存条,打开Chrome浏览器约占用1G内存,Chrome浏览器会将这1G内存分配给各个网页,分配包括渲染器、网络模块、浏览外壳和JS引擎(V8引擎)。
JS引起分为代码区和数据区。
数据区包括栈内存和堆内存。
简单类型的数据直接存在 Stack (栈内存)里;复杂类型的数据是把 Heap(堆内存) 地址存在 Stack 里。
例1:
var a = {n:1};var b = a;a.x=a.{n:2};//第一个a的地址为34,第二个a的地址由34变为54,a.x为ADDR34alert(a.x); //undefined 此处的a的地址为54alert(b.x); //[object Objrct]
例2:
var a={name:'a'};b=a;b={name:'b'};a.name=?//"a"
var a={name:'a'};b=a;b.name='b';a.name=?//"b"
例3:
var a={name:'a'};var b=a;b=null;a=?//{name:"a"}
例4:
var a={};a.self=a;a.self.self.self //{self: {…}}
var a = {self:a};a.self; //undefined//相当于var a;a={self:a};//此处第二个a为undefined//{self: undefined}