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

深入了解Javascript的范围和上下文

深入了解Javascript的范围和上下文
总结

The implementation of the scope and context in Javascript is a unique feature of the Javascript language and, to some extent, the Javascript language is very flexible.The functions in Javascript can be used in a variety of contexts, and the scope can also be encapsulated and saved.It is because of these features that a lot of useful design patterns are provided in Javascript.However, the scope and context are also a place where Javascript programmers are often confused in development.

下面将向您展示Javascript中的范围和上下文的概念,以及它们之间的差异。

范围与语境

该解释第一重要的是,范围和规模都是不一样的概念,他们是不一样的东西。作为一个前端菜力,经常看到一些结果这两个概念的混乱,有些事情不明白,这两个概念似乎困惑了很长一段时间。因此,大量的信息被选中,这两个概念进行简要的说明:stuck_out_tongue_closed_eyes:

在Javascript中,当一个函数被调用时,有一个范围和上下文的功能结合在一起。从根本上讲,范围是基于功能和语境是基于对象的。换句话说,范围适用于变量的访问权限的功能,当调用函数时,通常指的是该关键词的价值,而这是一个参考,当前执行代码的对象。

变量范围

一个变量可以在本地或全球范围内定义的,称为局部变量和全局变量,分别为一个全局变量是一个变量声明在一个函数的函数和全局变量可以在程序的任何地方。局部变量是指在函数定义的变量,只能访问内部函数和嵌套函数,不能被外部访问功能。

Javascript目前不支持块级作用域(变量定义语句如,开关,等等)。这意味着变量定义在块外也可以阻止访问。然而,在6,我们可以使用let关键字定义的块级范围。

对于内容的范围,可以查其他信息,这部分内容比较简单。

这种情况下

上下文(上下文)通常取决于调用函数的方式。当函数的函数被称为对象时,这是指调用函数的对象。

复制代码代码如下所示:

var obj = {

函数(){

console.log(= obj);

}

};

Obj.foo(真); / /输出
类似地,当我们使用新关键字创建一个新对象时,这是指新创建的对象。

复制代码代码如下所示:

函数(){

console.log(本);

}

富(窗口); /输出

var obj =新(Foo); / /输出foo { }
需要注意的一点是,当调用全局作用域中的函数时,这是指全局对象。在浏览器环境中,它指的是窗口,但是,如果代码在严格的模式下运行,则设置为未定义。

执行上下文(执行上下文)

Javascript是一种单线程语言。也就是说,当Javascript在浏览器中运行时,它只能一次只做一件事,而其他事情将等待以队列的方式处理。

1。当Javascript代码文件被浏览器加载时,默认是全局执行上下文。当一个函数在全局上下文中调用时,程序就停留在调用函数中。此时,Javascript引擎为函数创建一个新的执行上下文,并将其按下到执行上下文堆栈的顶部。一旦执行,上下文将从堆栈顶部弹出,然后输入上下文执行代码。这样,堆栈中的上下文依次执行,并在返回到全局上下文之前弹出。

2。执行上下文可以分为两个阶段:创建阶段和执行阶段。在创作阶段,Javascript解释器首先创建一个变量对象(也是一个活动对象,活动对象)。活动对象由变量、函数声明和参数。在这个阶段,该函数的作用域链初始化,和这个对象的引用也被确定。下一个阶段是执行阶段,该代码是解释执行。

在Javascript代码中,您可以拥有任意数量的函数上下文,我们已经知道,当函数被调用时,Javascript解释器将创建一个新的上下文,范围也创建一个私有的,函数中声明的任何变量都不能直接在外部函数范围内访问。

三.通过以上的解释,我们有一个函数的执行上下文的一个基本概念,但它也是一个地方,每个人都是最容易混淆。在Javascript的执行上下文是主要的范围,不是在这样的背景下,上述第四个部分。有许多相似、容易混淆的概念在Javascript中,但我们会不如果我们只是澄清,每个概念是指特定对象的困惑。因此,我们希望您能在这里真正地区分执行上下文和上下文。

简单地说,执行上下文是与域相关的概念,尽管它可能不那么严格。

作用域链

对于每一个执行上下文,都有一个绑定到它的范围。范围链包含执行上下文活动对象(激活对象,这听起来有点旁路)在执行上下文堆栈中。

代码示例:

复制代码代码如下所示:

函数第一(){

第二();

函数第二(){

第三();

函数第三(){

第四();

函数第四(){

代码

}

}

}

}

第一();
上面的代码被执行,和嵌套函数的执行。至于上面的代码而言,形成一个作用域链,并从顶级域链底部的序列是:第四,第三,二,第一,全球第四。函数可以访问全球范围内的变量,和可以访问任何变量在函数定义的第三,二,和第一。

有一点需要注意的是,在函数中,本地变量的优先级高于相同名称的全局变量。如果变量和全局变量在函数或函数参数中包含本地变量中的语句,则全局变量由局部变量覆盖。

简单地说,每当我们试图访问一个变量时,程序就在当前函数的范围内寻找变量。如果找不到,它会沿着作用域链到函数的顶部查找它。在找到变量之前,如果找不到,我们将返回到未定义的位置。

总结

本文介绍了Javascript中的上下文和范围的概念,Javascript中有几个重要的概念,如闭包等,这些概念稍后将被写到文章中。

相关文章

Excel如何改变列宽和行基于Excel的

Excel如何改变列宽和行基于Excel的

高度,电脑软件,Excel,Office Excel是微软公司开发的一个电子表格程序,是微软Office系列的核心组件之一。它可以为XML和新功能提供支持,使分析和共享信息更加方便。 以下是学习excel知识。 Excel提供了几种改变列宽度和行高度的方法。 1。改变…

WPS如何使表如何合并单元格WPS表教

WPS如何使表如何合并单元格WPS表教

教程,合并单元格,电脑软件,WPS,无论是在工作或学习或生活中我们可以使用WPS,我们经常遇到需要做表格,表格是为了做WPS Excel,但我不爱很小,有时它太麻烦做一个小桌子,所以小份额中文字如何美丽的形式和WPS形式和分享如何合并单元格我们希望与WPS…

如何在PSPNG8位格式导出文件

如何在PSPNG8位格式导出文件

导出文件,格式,如何在,电脑软件,如何在PS PNG8位格式导出文件ps是一个图像处理软件。功能强大,想要全面全面地了解,需要时间。接下来,分享在PS.出口PNG8格式文件的具体方法 ps是一个图像处理软件。它的功能和它的强度,要全面全面的了解,不是日夜…

excel函数应用程序的基本excel库

excel函数应用程序的基本excel库

应用程序,函数,电脑软件,excel,Excel函数应用基础 1。函数与公式 (1)什么是功能 Excel函数是预定义的特殊公式,进行计算、分析,以及数据的任务,其他处理。以常见的求和函数为例,它的语法是和(number1,number2,…),SUM称为函数名称,一个函数只有一个独特…

jQuery插件slicebox三维动画轮播切

jQuery插件slicebox三维动画轮播切

插件,三维动画,电脑软件,jQuery,slicebox,美丽的3D动画图片轮播切换效果的jQuery插件jquery.slicebox.js,基于jQuery的插件,使用CSS 3D动画,支持回调调用,支持自定义的配置参数,如:速度:600、自动播放:真正的开关速度是自动在浏览器兼容播放,需要一…

关闭和显示Javascript广告效果的示例

关闭和显示Javascript广告效果的示例

显示,示例,效果,广告,电脑软件,本文介绍了javascript广告的关闭和显示效果,供大家参考,具体的实现方法如下: js代码部分如下所示: 函数显示(){ 如果(oglead.style.visibility = = 'visible){ oglead.style.visibility =隐藏; document.getelementbyid('…

用ps绘制平面长投影按钮

用ps绘制平面长投影按钮

投影,绘制,平面,按钮,电脑软件,本教程主要是教你用ps绘制平面和长投影效果按钮,效果非常逼真,渲染过程也不难。有兴趣的朋友可以学习一下。 本教程教PS用户使用ps来绘制一个漂亮的长平面投影效果按钮,渲染出来的按钮效果非常好,渲染也不难,方法…

获取指定对象大小的Javascript方法

获取指定对象大小的Javascript方法

方法,对象,大小,电脑软件,Javascript,本文演示了Javascript如何获得指定对象的大小: 功能objectsize(the_object){ 函数来验证键是否存在 在对象中获取有效键的数量。 无功object_size = 0; 对于(关键在the_object){ 如果(the_object.hasownproperty(关键…

PS图象处理软件街与暗黄绿色的美

PS图象处理软件街与暗黄绿色的美

黄绿色,图象,处理软件,电脑软件,PS,天空中的图像有点白颜色,需要使用渐变填充颜色时,则底色的主要部分是蓝色,高光橙色可以增加。 天空中的图像有点白颜色,需要使用渐变填充颜色时,则底色的主要部分是蓝色,高光橙色可以增加。 原 最终效果 1,打…

Math.sin()方法在Javascript中使用详解

Math.sin()方法在Javascript中使用详解

方法,详解,电脑软件,Math,sin,该方法返回一个数的正弦值,方法返回1到1之间的值,该值表示参数的正弦值。 语法 Math.sin(X); 下面是参数的详细信息: X:一个数字 返回值: 返回一个数字的正弦值。 实例uff1a Javascript数学的罪恶()方法 VaR值= math.sin…

如何excel2010使扇形统计excel2010

如何excel2010使扇形统计excel2010

扇形,教程,统计,电脑软件,Excel是微软办公系统的电子表格程序。你可以用Excel创建一个工作簿(收集电子表格)并设置工作簿的格式对数据进行分析,并做出更明智的业务决策。特别是,您可以使用Excel来跟踪数据,生成的数据分析模型,编制计算公式计算数…

用PHP将数组值转换成键的方法

用PHP将数组值转换成键的方法

方法,数组,转换成,电脑软件,PHP,本文演示了PHP如何将数组值转换成键: 功能values2keys($ ARR,美元的价值= 1){ $ =数组(); 而(表($ K $ V)=每($ ARR)){ 美元=修剪(五美元); 如果(五美元)!=){ $新{ $ } = $; } } 返回$新; } 希望本文能对大家的PHP程序设计有所帮…