1. 浏览器执行JS代码 ①. 从电脑内存中分配出一块内存,用来执行代码(栈内存——>stack) ②. 分配一个主线程用来自上而下执行JS代码 2. 简单值的存储 声明一个let a = 12; 的全过程 第一步——创建变量a, 放到栈内存的变量存储区 第二步——创建值12,把它存到栈内存值区域中 第三步——“=”为赋值,让值与变量关联 3. 复杂值的存储 第一步——内存中分配出一块新内存,存引用类型值(堆–heap)==>内存有一个16进制地址 第二步——对象中的键值对依次存储到堆内存里 第三步——把堆内存地址和变量关联起来
区别: 基本数据类型——按值操作(直接操作的是值),多以也叫做值类型 引用数据类型——操作的是堆内存的地址(按引用地址操作)
例题
let n = [10,20];
let m = n;
let x = m;
m[0] = 100;
x = [30,40];
x[0] = 200;
m = x;
m[1] = 300;
n[2] = 400;
问此时的m,n,x
如上图所示,一个图就可以很好的解释,在引用数据类型的赋值上,只是将栈内存中存储的地址赋给对方,并不是拷贝,所以改变任意一个引用的值都会引起改变。 JS赋值的特点是关联,而不是拷贝