zoukankan      html  css  js  c++  java
  • js执行上下文与执行上下文栈

    在了解js的执行上下文对象与执行上下文栈之前,我们要先了解两个概念 即变量提升跟函数提升

        变量提升 : 通过var定义的变量,在定义语句之前我们就可以直接访问到,不过它的值是undefined

        函数提升:  通过function定义的函数,在函数定义语句前,我们就可以直接调用

        变量提升与函数提升都是js引擎的预处理产生的 ,先是变量提升,然后才是函数提升.

      执行上下文对象

        全局执行上下文:  ( 确定执行上下文对象==>预处理==>执行代码 )

          1. 在执行全局代码前将window确定为全局执行上下文对象

          2. 对全局数据进行预处理:

            对变量进行提升,值设置为undefined.并添加为window对象的属性

            对函数进行提升并赋值.添加为window对象的方法

            将this赋值为window;

          3. 最后开始执行全局代码

        

         函数执行上下分: ( 调用函数==>创建函数执行上下文对象==>预处理==>执行函数体 )

          1. 在调用函数,准备执行函数体代码之前,创建对应的函数执行上下文对象  (虚拟的,存于栈中)

          2. 对局部数据进行预处理:

             把实参赋值给形参,添加为该执行上下文对象的属性

             变量提升

             函数提升

             把this赋值给调用该函数的对象

          3. 开始执行函数体代码

       执行上下文栈  :   (为了方便管理,js隐藏会创建一个栈来统一管理执行上下文对象)

         1.在全局代码执行前,js引擎创建一个栈,用于管理所有的执行上下文对象

         2. 全局执行上下文对象(window)确定后,将其放入到栈中

         3. 调用函数时,会创建一个此函数的执行上下文对象,并放到栈中

         4. 函数执行完,js引擎会将其对应的执行上下文对象从栈中移除

         5. 所有的代码执行完后,栈中只剩window

  • 相关阅读:
    Azure HPC Pack Cluster添加辅助节点
    Azure HPC Pack 辅助节点模板配置
    Azure HPC Pack配置管理系列(PART6)
    Windows HPC Pack 2012 R2配置
    Azure HPC Pack 节点提升成域控制器
    Azure HPC Pack VM 节点创建和配置
    Azure HPC Pack 部署必要条件准备
    Azure HPC Pack 基础拓扑概述
    Azure VM 性能计数器配置
    Maven私仓配置
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309143.html
Copyright © 2011-2022 走看看