浏览器想要执行js代码,需要:
- 从电脑中分配出一块内存,用来执行代码。栈内存(stack) 栈内存包括变量存储空间、值存储空间
- 分配一个主线程,自上而下执行代码
数据类型分为:值数据类型、引用数据类型
面试题01——值类型js执行过程
let a = 12;
let b = a;
b = 13;
console.log(a,b) //12,13
值数据类型的执行过程是:
- 创建变量a,放到当前栈内存的变量存储空间
- 创建一个值12,放到当前栈内存的值存储空间
(简单的值数据类型是这样存储的,复杂的引用数据类型不是这样存储的)
- = 是赋值。让变量和值关联起来
面试题02 - 引用数据类型的js执行过程
let n = {name:'小明'};
let m = n;
m.name = '小红';
console.log(n.name) //'小红'
~~~~ 引用数据类型的执行过程是:
- 创建变量n,放到栈内存的变量存储空间(同上)
- 在内存中,分配一块新内存,存储引用类型的值。(堆内存 Heap)堆内存有个16进制的地址
- 把值以键值对的形式,依次存储到堆内存中
- 把堆内存的地址和变量关联起来(此时 栈内存的值存储空间是一个地址)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。