我们编写的JS代码都是需要在一个环境中运行的:比如
- 1.浏览器(引擎):例如webkit,gecko,Trident, blink
- 2.node*(基于V8渲染js)
- 3.webview(v8引擎)
1.JS之所以能够在浏览器中运行,是因为浏览器给JS提供了执行的环境 => 栈内存
- 1.1栈内存(ECStack(Execution Context Stack):执行环境栈):浏览器在计算机内存中分配一块内存,专门用来供代码执行(也就是提供代码执行的环境)
- 1.2全局对象(GO(Globle Object)):浏览器把内置的一些属性和方法放一个单独的内存中,堆内存(Heap),浏览器端会让window指向GO即:window =GO
- 1.3堆内存(Heap):存放东西(属性和方法(例:isNaN:function...))
- 1.4任何开辟的内存都有一个16进制的内存地址,方便后期找到这个内存
- 1.5执行上下文EC(Execution Context):在编程语言中,代码执行中,为了区分全局和函数执行所处的不同的作用域(目的是为了区分每个词法作用域下代码的独立性)=>EC(Execution Content)执行上下文:代码执行所在的词 法作用域,或者代码执行所处的范围
- 1.6VO(variable Object)->AO(Active Object)变量对象:在每一个上下文代码执行的时候,都可能会创建变量,所在每一个上下文中(不论是全局还是私有),都会有一个存储变量的空间:VO(variable Object)->AO(Active Object)变量对象:存放当前上下文中变量的,只不过全局上下文成为VO(G),私有上下文中称为AO(xx),但是也是变量对象