加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

ECMA-262-3 深入理会.第二章.变量工具

发布时间:2018-09-06 22:36:22 所属栏目:创业 来源:站长网
导读:导言 在措施中我们总要声明变量和函数,然后乐成的用它们来构建我们的体系。当我们引用必要的工具时,表明器怎样、在那边找到我们的数据(functions,variable),会产生什么? 许多ECMAScript 措施员都清晰变量与 执行上下文 亲近相干。 var a = 10; // v

导言

在措施中我们总要声明变量和函数,然后乐成的用它们来构建我们的体系。当我们引用必要的工具时,表明器怎样、在那边找到我们的数据(functions,variable),会产生什么?

许多ECMAScript 措施员都清晰变量与执行上下文亲近相干。

var a = 10; // variable of the global context
(function () {
  var b = 20; // local variable of the function context
})();
alert(a); // 10
alert(b); // "b" is not defined

同时,许多措施员也知道,在当前版本的类型中,独立的浸染域只能通过“function”代码范例的执行上下文来建设。也就是说,比拟C/C++,ECMAScript 中的轮回块不能建设一个局部的上下文。

for (var k in {a: 1, b: 2}) {
  alert(k);
}
alert(k); // variable "k" still in scope even the loop is finished

当声明数据时会产生什么?让我们看看更多细节。

数据声明

当变量与执行上下文相干,它应该知道数据存储在那边,怎样获得它。这种机制称之为变量工具。

譬喻,它可以示意为正常的ECMAScript工具的变量工具:

VO = {};

正如我们所说,VO是执行上下文的属性:

activeExecutionContext = {
  VO: {
    // context data (var, FD, function arguments)
  }
};

间接引用变量(通过VO的属性名)只限于全局上下文的变量工具(在哪里全局工具自身就是变量工具,稍后将涉及到)。对付其余浸染域,直接引用一个VO是不行能的,它完满是执行机制。

当我们声明一个变量或一个函数时,并没有为VO建设一个新的属性,该属性拥有我们变量的名字和值。

譬喻:

var a = 10;
function test(x) {
  var b = 20;
};
test(30);

响应的变量工具是:

// Variable object of the global context
VO(globalContext) = {
  a: 10,
  test:<reference to function>
};

// Variable object of the "test" function context
VO(test functionContext) = {
  x: 30,
  b: 20
};

可是,在执行时代(和类型中),变量工具是一个抽象的实体。从根原来讲,在详细的执行上下文中,VO定名差异,而且有差异的初始布局。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读