码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-12-06 03:25:28      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:win   函数嵌套   define   实参   取值   数据   function   就会   window   

#  执行上下文环境 #

 **定义**:执行函数的时候,会产生一个上下文的对象,里面保存变量,函数声明和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:是一个实参副本,与实参保持一致。
 

 ## 执行上下文栈 ## 

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

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

      

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

标签:win   函数嵌套   define   实参   取值   数据   function   就会   window   

原文地址:http://www.cnblogs.com/luowen075/p/6135851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!