渲染机制
1.在浏览器中打开页面,浏览器引擎会渲染相关的代码,换句话说会把代码从上往下执行
2.浏览器要执行代码,会提供一个供代码执行的环境,叫做ECStack(Execution Context Stack 环境执行上下文)=> 栈内存
3.最开始执行的是全局代码,会形成一个EC(GLOBAL)全局执行上下文,在栈内存中执行全局的代码
4.在全局执行中有一个VO(GLOBAL)全局对象,可以吧定义的变量和值存储在这里边
定义变量的三个步骤
基本类型变量
let a = 12;
1.创建值12(基本类型值直接存储在栈内存中即可
2.创建变量a,把其存储在对应的VO中
3.让创建的变量a和创建的值12关联在一起
引用类型变量
let n = {name : "一一"}
1.创建值
- 开辟一个堆内存,每一个堆内存都有一个16进制的地址(AAAFFF000)
- 把对象中的键值对分别存储到堆内存中
- 把堆内存的地址存储在栈内存中
2.创建一个变量
3.让创建的变量n和栈内存中存储的堆内存地址关联在一起
面试题1
let a = {},
b = '0',
c = 0;
a[b] = "一一";
a[c] = "还是一一";
console.log(a[b]);//“还是一一”,其他非字符串格式作为key和把它转化为字符格式没啥区别
面试题2
let a = {},
b = Symbol("1"),
c = Symbol("1");
a[b] = "一一";
a[c] = "还是一一";
/* Symbol是唯一值,两个Symbol是不想等的这里是两个熟悉
* 此时,a = {
* Symbol("1") : "一一",
* Symbol("1") : "还是一一"
* }
*/
console.log(a[b]);//“一一”
console.log(a[b]);//“还是一一”
面试题3
let a = {},
b = {n : "1"},
c = {m : 2}
a[b] = "一一";//b被转换成字符串[object Object]
a[c] = "还是一一";//c被转换成字符串[object Object]
console.log(a[b]);//“还是一一”,
堆栈内存(待整理)
Stack栈内存
- 作用
1.供代码执行
2.存储基本类型
Heap堆内存
- 作用(只有一个)
存储应用类型的值
所谓堆栈内存,就是在计算机内存中分配出一块空间,用于执行和存储代码
=>内存条:4GB 8GB
=>硬盘:500GB