浏览器执行js代码步骤:
- 从电脑内存中分配出一块内存,用来执行代码(栈内存=>Stack)
- 分配一个主线程用来自上而下执行js代码
示例1
/*
*1.创建变量a,放到当前栈内存变量存储区域
*2.创建一个值12,把它存储到当前栈内存值区域(简单基本类型这样存储,复杂引用类型不是这样)
*3.= 为赋值,其实赋值是让变量和值相互关联的过程
*/
let a = 12;
let b =a;
b = 13;
console.log(a); //12
操作值类型
示例2
/*
*复杂值(引用类型值)的存储,又分成三个步骤
*1.在内存中分配出一块新内存,用来存储引用类型值(堆内存=>heap)=>内存有一个16进制地址
*2.把对象中的键值对(属性名:属性值)依次存储到堆内存中
*3.把堆内存地址和变量关联起来
*/
let n = {
name:'珠峰'
};
let m = n;
m.name = '培训';
console.log(n.name);//px
操作引用类型
总结:
- 基本类型:按值操作(直接操作的是值),所以也叫做值类型
- 引用类型:操作的是堆内存的地址(按引用地址操作的)
练习:
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;
console.log(n,m,x);
运行机制