javascript执行上下文,变量对象的方法

  介绍

这篇文章主要讲解了javascript执行上下文,变量对象的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。


每当控制器(控制)转换到<代码> ECMAScript>

一段简短的句子,却包含着丰富的内容:

    <李>控制器:即<代码> js代码引擎李 <>李转换:从一段可执行代码跳转到另一段可执行代码李 <李>可执行代码:全局代码,函数代码,<代码> eval 代码(分别对应三种作用域)李 <>李执行上下文:是一个抽象的概念,ecma - 262标准用这个概念同可执行代码(可执行代码)概念进行区分

执行上下文在逻辑上组成一个堆栈,堆栈底部永远都是全局上下文(全局上下文),堆栈顶部是当前/活动的执行上下文(activeExecutionContext)。堆栈在EC类型的变量(EC)的各种广泛的被推入或弹出的同时被修改。

例如,我们可以定义一个数组来模拟执行上下文堆栈:

变量对象VariableObject  

变量对象(VO)作为执行上下文的一个属性存在,它存储下列内容:

    <李>所有变量声明(var, VariableDeclaration)
      <李>签证官的一个属性,这个属性由变量名称和未定义的值组成;如果变量名称跟已经声明的形式参数或函数相同,则变量声明不会干扰已经存在的这类属性。
    <李>函数声明(FunctionDeclaration,缩写为FD)
      <李>签证官的一个属性,这个属性由一个函数对象(函数对象)的名称和值组成;如果变量对象已经存在相同名称的属性,则完全替换这个属性。
    <李>以及函数的形参
      <李>签证官的一个属性,这个属性由一个形式参数的名称和值组成;如果没有对应传递实际参数,那么这个属性就由形式参数的名称和未定义的值组成;
 var m=30;
  功能测试(a, b) {
  var c=20
  函数d () {}
  var e=函数_e () {};
  }
  测试(10)

当进入“测试”函数的上下文时(传递参数10),AO如下:

AO(测试)={   答:10   b:没有定义,   c:定义,   d: & lt;参考FunctionDeclaration“d"比;   艾凡:未定义的   };

测试执行到最后时,对应此刻上下文堆栈:

 

警报(一个);//定义   警报(b);//癰"没有定义      b=10;   var=20;

所有根源仍然是签证官和它的修改阶段(进入上下文阶段和执行代码阶段):

警报(一个);//定义,我们知道为什么
  
  b=10;
  警报(b);//10,在代码执行创建的
  
  var=20;
  alert ();//20,修改代码执行

关于变量,还有一个重要的知识点。变量相对于简单属性来说,变量有一个特性(属性):{DontDelete},这个特性的含义就是不同通过删除操作符直接删除变量属性。

javascript执行上下文,变量对象的方法