浏览器底层运行机制

浏览器底层运行机制

JS之所以能够在浏览器中运行,是因为浏览器给JS提供了执行的环境 => 栈内存(Stack)

  • 堆栈内存
    • 栈(Stack)内存:提供代码执行的环境
    • 堆(Heap)内存:存放东西(属性和代码)
    • 浏览器会把内置的一些属性方法放到一个单独的内存中,堆内存
    • 任何开辟的内存都有一个16进制的内存地址,方便以后找到这个内存
  • ECStack(Execution Context Stack):栈内存(执行环境栈)是浏览器在计算机中分配的一块内存,专门用来供代码执行的
  • EC(Execution Context): 执行上下文,代码自己执行所在的环境
    • 全局的执行上下文(ECG)
    • 函数中的代码都会在一个单独的私有的执行上下文中处理
    • 块级的执行上下文
  • GO(Global Object): 全局对象,浏览器端会让window指向GO
  • VO(Varibale Object): 变量对象,在当前的上下文中,用来存放创建的变量的地方(每一个执行上下文中都会有一个都会有一个自己的变量对象)
  • AO (Activation Object): 函数私有上下文中的变量叫做AO(activation Object)活动对象,但是也是变量对象

创建一个变量对象(值类型)

  1. 创建一个值
  2. 创建一个变量
  3. 让变量和值关联在一起

创建一个变量对象(引用类型)

  1. 创建一个堆内存
  2. 把键值对存到堆内存中
  3. 堆内存地址放到栈中供变量调用
  • 基本数据类型都是直接存放到栈内存中的
  • 引用数据类型值是先开辟一个堆内存,把键值对放进去,再地址放到栈中供变量关联使用
  • 所有的指针赋值都是指针的关联指向

练习题解析:
浏览器底层运行机制