内存图

基本类型/简单类型: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为ADDR34

alert(a.x); //undefined  此处的a的地址为54
alert(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}
原文地址:https://www.cnblogs.com/BUBU-Sourire/p/11094625.html