• 执行上下文环境—JavaScript面向对象高级


    #  执行上下文环境 #

     **定义**:执行函数的时候,会产生一个上下文的对象,里面保存变量,函数声明和this。

     **作用**:用来保存本次运行时所需要的数据

     在产生执行上下文(执行上下文环境)时,浏览器会做以下三个准备工作:
     
          1.提取var 声明的变量,并赋值为 undefined
          2.提取声明式函数。
          3.给this赋值,指向window或当前对象。

             函数每执行一次都会产生一个执行上下文,
             因为函数参数不同会有不同的计算结果,
             
      ## 全局上下文环境 ##

       全局级别的代码,如多个script标签,一旦执行就会进入全局执行上下文环境
      
             1.提取普通变量,如 var a  ,并赋值 a = undefined
             2.提取声明式函数,function fn(){}
             3.给 this 赋值,this指向window

      ## 局部上下文环境   ##
      
       在函数调用的时候产生,每一次调用就会产生,调用完成后销毁(除闭包)。
          
          1.提取普通变量,如 var a  ,并赋值 a = undefined
          2.提取声明式函数,function fn(){}
          3.给 this 赋值,this指向当前对象
          4.给参数赋值
          5.给arguments 赋值
          6.自由变量的取值作用域,查找并赋值
      
          自由变量:在当前作用域中未声明的变量,会去其上一级查找,直到window
          arguments:是一个实参副本,与实参保持一致。
     

     ## 执行上下文栈 ## 

       **压栈 和 出栈**
       
           压栈:函数未调用时只有全局上下文在执行,每次调用函数时会产生局部上下文,这就是压栈,也就是进栈。
        
           出栈:函数调用完成后,就会出栈,会销毁本次调用的局部上下文环境

      注意:若函数里面是多层函数嵌套,也会出现多层执行上下文的嵌套
           压栈和出栈也是嵌套产生的 

          

  • 相关阅读:
    struts2增删改查---layer---iframe层---通配符---国际化
    struts2增删改查---layer---iframe层
    struts2相关简单介绍
    直接在数据库客户端插入当前时间
    STL find() ,还是挺重要的
    两种应该掌握的排序方法--------1.shell Sort
    程序员的工具箱
    计算机科学中最重要的32个算法
    函数的重载与 泛型(generic)有什么不同?
    ruby编程语言-学习笔记5(第5章 语句和控制结构)
  • 原文地址:https://www.cnblogs.com/luowen075/p/6135851.html
Copyright © 2020-2023  润新知