学习JavaScript也存在一段时间,以下是个人对JavaScript中抽象的知识点记录备案,将有待于后面逐个完善......
1.JavaScript在内存中的体现(内存中栈堆与基本类型及引用类型关系)
基本类型 存放在栈(stack)中简单的数据段,有5种基本类型包括undefined、null、string、number、boolean 按值存放可直接访问
引用类型 存放在堆(heap)内存中的对象,变量实际保存的是一个指针,该指针地址用来指向存储在堆(heap)内存中的对象
这里不再重复造轮子推荐请链接【博客园精华区】js堆栈与拷贝,文章思路清晰易懂
(标注 对JavaScript栈堆的理解直接关系到能不能真正理解js中变量类型(基本类型、引用类型)、作用域、闭包、执行上下文、单线程等相关知识点)
2.JavaScript执行上下文 (代码创建完成阶段、代码执行阶段)
function fn(){
console.log(num);
console.log(fn2);
var num = 100;
function fn2(){}
}
fn();
3.变量对象(Variable Object简称VO)与 执行上下文(Execution Contexts)关系
如果变量与执行上下文相关,那么它自己应该知道它的数据存储在哪里和如何访问。这种机制被称作 变量对象(variable object).
变量对象 (缩写为VO)就是与执行上下文相关的对象(译者注:这个“对象”的意思就是指某个东西),它存储下列内容:
- 变量 (var, VariableDeclaration);
- 函数声明 (FunctionDeclaration, 缩写为FD);
- 以及函数的形参
4.变量对象(Variable Object简称VO)与 激活对象(AO)关系
5.作用域链ScopeChain与执行上下文有何关系??