当前位置:首页 > 日记 > 正文

javascript基础进阶_深入剖析执行环境及作用域链

javascript基础进阶_深入剖析执行环境及作用域链

执行环境

执行环境定义了变量或函数有权访问的其他函数,决定了他们各自的行为。每个执行环境都有一个与之关联的变量对象。

变量对象

环境中定义的所有变量和函数都保存在这个对象中。

全局执行环境

全局执行环境是最外围的一个执行环境。在web浏览器中,全局执行环境被认为是Window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。

每个函数都有自己的执行环境。

作用域链

当代码在一个环境中执行,会创建变量对象的一个作用域链。

用途:保证对执行环境有权访问的所有变量和函数有序访问。

特点:作用域链的前端始终是当前执行的代码所在的环境的变量对象。如果这个环境是函数,则将其活动对象作为变量对象。活动对象最开始只包含arguments对象。作用域的下一个变量对象来自包含环境,而再下个来自下一个包含环境。

var color ="blue";function changeColor() {  var anotherColor ="red";  function swapColors() {  var tempColor = anotherColor;  anotherColor = color;  color = tempColor; } swapColors();}changeColor();

如图表示执行环境,内部环境可以通过作用域链访问外部环境,但是外部环境不能访问内部环境中的变量和函数。每个环境都可以向上搜索作用域链,以查询变量和函数;但是不能向下搜索。

没有块级作用域 声明变量

使用var声明的变量会自动添加到最接近的环境中。如果省略var关键字,即会添加到全局环境中。

function add(num1,num2) { var sum = num1+num2; return sum;}var result= add(10,10)console.log(sum)


sum is not defined

function add(num1,num2) { sum = num1+num2; return sum;}var result= add(10,10)console.log(sum)


查询标识符

搜索过程从作用域链的前端开始,向上逐级查询与给定名字匹配的标识符,找到即终止搜索。即如果局部环境中存在着同名标识符,就不会使用位于父环境中的标志符。

var color ="red";function getColor() { return color;}console.log(getColor())


var color ="red";function getColor() { var color="green"; return color;}console.log(getColor())


参考:《javascript高级程序设计(第三版)》

以上这篇javascript基础进阶_深入剖析执行环境及作用域链就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关文章

js控制文本框禁止输入特殊字符详解

js控制文本框禁止输入特殊字符详解

控制,文本框,特殊字符,禁止输入,详解,在开发难免遇到一些前端需要验证输入的数据是否合法的问题,收集分享在这里同学们使用,欢迎补充。1.标签上直接替换方法:JS 控制不能输入特殊字符<input type="text"class="domain"onkeyup="this.valu…

退出Excel 2007程序窗口有什么方法

退出Excel 2007程序窗口有什么方法

退出,方法,有什么,窗口,程序,  在我们不使用Excel 2007程序时,就应该将其关闭。退出Excel 2007程序窗口,通常会有以下两种方法。以下是小编为您带来的关于退出Excel 2007程序窗口,希望对您有所帮助。退出Excel 2007程序窗口1、主菜单退出Exc…

Excel表格如何制作项目文件目录表

Excel表格如何制作项目文件目录表

文件目录,项目,表格,电脑软件,Excel,  日常工作中,一个项目的文件往往会有很多个,在Excel中制作一个项目文件目录,可以快速方便的查看不同的文件。以下是小编为您带来的关于Excel表格制作项目文件目录表,希望对您有所帮助。Excel表格制作项目…

Word标题段落如何设计的层次分明

Word标题段落如何设计的层次分明

段落,分明,标题,电脑软件,Word,  我们在Word文档写文章的时候,有很多并列的段落,要让内容更有层次感,应该怎么设置?以下是小编为您带来的关于Word标题段落设计的层次分明,希望对您有所帮助。Word标题段落设计的层次分明1、打开需要编辑的文件…

excel2010填充颜色快捷键教程excel

excel2010填充颜色快捷键教程excel

填充,快捷键,教程,颜色,快速,  在Excel中很多功能都拥有快捷键,这些快捷键能让用户更加快的完成工作,提高工作效率,其中填充颜色就是最好的例子,填充颜色的快捷键具体要如何操作呢?接下来是小编为大家带来的excel2010填充颜色快捷键教程,供大…

js生成随机数方法和实例

js生成随机数方法和实例

随机数,方法,实例,电脑软件,js,由js生成一切随机数的基础都是Math.random(),这个方法比较特别,生成的随机数落在的区间是[0,1),进行一次操作的话,js只能生成一个类似于[n,m)这样,左闭右开的区间。所以当有一些特殊需求的时候,就势必要进行一些其…

滤镜插件怎么在ps中安装

滤镜插件怎么在ps中安装

安装,插件,滤镜,方法,电脑软件,  在ps中有很多下载的滤镜都可以使用,这些就是滤镜插件。其实这个也不算太难,下面就让小编告诉你滤镜插件怎么在ps中安装的方法,一起学习吧。滤镜插件在ps中安装的方法首先找到下好的插件这里我以Silver Efex …

excel if函数多层嵌套的使用方法

excel if函数多层嵌套的使用方法

函数,嵌套,多层,使用方法,电脑软件,  excel中有很多时候会需要用到IF这个函数,而这个函数是可以多层嵌套的,就是多层条件、关系,接下来请欣赏小编给大家网络收集整理的excel if函数多层嵌套的使用方法。excel if函数多层嵌套的使用方法excel…

excel怎么制作甘特图excel制作甘特

excel怎么制作甘特图excel制作甘特

甘特图,步骤,方法,电脑软件,excel,  利用excel制作甘特图,可以明确表示并行处理的任务,每个任务处理所需要的时间等,那么,下面小编就教你们怎么怎么做一个甘特图。希望对你有帮助!excel制作甘特图的步骤 1.添加辅助列  在数据区域原C列左侧…

如何利用书籍版式设计一个PPT封面

如何利用书籍版式设计一个PPT封面

版式,封面,书籍,电脑软件,PPT,  不知道大家有没有看过书籍版式的PPT封面,书籍封面的PPT看起来有些文艺风,给人一种挺好的视觉体验。以下是小编为您带来的关于利用书籍版式设计一个PPT封面,希望对您有所帮助。利用书籍版式设计一个PPT封面具…

word2010怎么调整标题间距word2010

word2010怎么调整标题间距word2010

调整,步骤,方法,间距,标题,  文档标题过长,通过调整字与字的间距实现标题缩短,具体怎么做下面小编来告诉你吧。word2010调整标题间距的步骤第一步,把该WORD文档标题选中,方便后续处理。所中状态为此行有底色,如下图所示。word2010调整标题间距…

ppt裁剪成圆形图有什么方法步骤

ppt裁剪成圆形图有什么方法步骤

步骤,图片裁剪,方法,有什么,电脑软件,  PPT如今排版图片编辑越来越成熟,圆形图片比以往只是简简单单一个图片更加的有艺术感,在ppt中想要将图片裁剪成圆形,该怎么裁剪。以下是小编为您带来的关于ppt图片裁剪成圆形图,希望对您有所帮助。ppt图…