广告
返回顶部
首页 > 资讯 > 前端开发 > html >怎么使用作用域与作用域链
  • 863
分享到

怎么使用作用域与作用域链

2024-04-02 19:04:59 863人浏览 八月长安
摘要

这篇文章主要讲解了“怎么使用作用域与作用域链”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用作用域与作用域链”吧!一、作用域如果说执行上下文是代码的执

这篇文章主要讲解了“怎么使用作用域与作用域链”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用作用域与作用域链”吧!

一、作用域

如果说执行上下文是代码的执行环境,那么作用域就是执行环境中的一套执行规则,既然是规则,javascript  引擎执行代码时要遵守这套规则,同时开发人员在写代码时,同样也要遵守这套规则。

1、什么是作用域

我们先来看这样一个例子:

function foo () {   var bar = 'xiaolu' } foo() console.log(bar)

上述的运行结果很明显,控制台会报错 bar is not  defined,我们可以通过这个小例子就可以发现在函数外部访问函数内部声明的变量是不可访问的,这背后的原因就是 JavaScript  作用域存在导致的结果。

2、什么是词法环境

说到作用域,那什么是作用域?我们先来认识一下这位老朋友词法环境。

ECMAScript 规范中对词法环境的描述如下:词法环境是用来定义基于词法嵌套结构的 ECMAScript  代码内的标识符与变量值和函数值之间的关联关系的一种规范类型。

说的直白一点,词法环境就是一套规范和规则,它用来规定某些函数和变量的可访问范围等,我们也称词法环境为「词法作用域」。

既然词法作用域是一套约定好的规则,那么词法作用域的作用范围是开发人员在写代码的时候就已经是确定了的。

当代码执行的时候, JavaScript 引擎就会根据这套规范通过标识符名称来查找相对应的变量和函数。

好吧,最后给它做个总结性的定义。

作用域:作用域是一套约定好的规范和规则,它用来规定某些函数和变量的可访问性等。

二、作用域链

作用域我们弄明白了,我们再来看作用域链。作用域链和作用域却大不相同,咱们分别从「执行栈层面」和「代码层面」来体验一下什么是作用域链。

var name = "xiaolu"; function fn () {   console.log(name);   function getName(){     console.log(name);   }   getName(); } fn();

执行栈中的作用域链示意图:

图片

该示意图为上述代码的执行情况,在上述示意图中,不同的色块缩进形成的可访问链就是我们所说的作用域链。

虽然上述示意图是抽象出来的,如果我们在代码层面来理解作用域链,又是如何实现的呢?

在上一篇中分享到,每当创建一个新的执行上下文时,都会创建一个「变量对象」用于存放当前执行上下文中的变量和函数。(记住:这个变量对象很重要)

如果我们把这些执行上下文的「变量对象」关联起来,就形成了一条链,我们把这条链的实现称为「作用域链」。

图片

上述代码的执行结果是打印输出:

1var name = "xiaolu";

2function fn () {

3 console.log(name);

4 function getName(){

5 console.log(name);

6 }

7 getName();

8}

9fn();

当内部的 getName 执行时 JavaScript 引擎就在 getName 作用域内查找变量  name,发现并没有,就会沿着上图中的作用域链往上层寻找,在 fn 的作用域中也没有发现 name  变量,然后继续沿着作用域链往上层的寻找,直到全局作用域中,发现存在变量 name,然后输出 name 的值。

感谢各位的阅读,以上就是“怎么使用作用域与作用域链”的内容了,经过本文的学习后,相信大家对怎么使用作用域与作用域链这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么使用作用域与作用域链

本文链接: https://www.lsjlt.com/news/83374.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用作用域与作用域链
    这篇文章主要讲解了“怎么使用作用域与作用域链”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用作用域与作用域链”吧!一、作用域如果说执行上下文是代码的执...
    99+
    2022-10-19
  • 什么是作用域与作用域链
    本篇内容主要讲解“什么是作用域与作用域链”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是作用域与作用域链”吧!作用域如果说执行上下文是代码的执行环境,那么作...
    99+
    2022-10-19
  • JavaScript作用域与作用域链使用重点讲解
    作用域和作用域链方面的知识是JS的重点,去面试十个有八个都会问你这块的知识,所以说这块是特别特别的重要,下面我们好好理解一下作用域和作用域链到底是个什么: 先上一段代码: var a...
    99+
    2022-11-13
    JS作用域与作用域链 JS作用域 JS作用域链
  • JavaScript作用域与作用域链优化方式
    目录前言内容作用域作用域的嵌套作用域的一些实现细节作用域链相关优化总结前言 作用域和作用域链是所有JavaScript开发人员每天都要接触和应用的内容。不管是面试中的作用域链的面试考...
    99+
    2022-11-13
  • js作用域链怎么使用
    这篇文章主要介绍js作用域链怎么使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!说明只要是代码,至少有一个作用域。写在函数内部的局部作用域。如果函数中有函数,在这个功能域中可以诞生另一个功能域。根据内部函数可以访问...
    99+
    2023-06-20
  • JS作用域链怎么用
    这篇文章主要为大家展示了“JS作用域链怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS作用域链怎么用”这篇文章吧。具体内容如下1、所有全局变量和函数都是...
    99+
    2022-10-19
  • js作用域及作用域链工作引擎怎么应用
    本文小编为大家详细介绍“js作用域及作用域链工作引擎怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“js作用域及作用域链工作引擎怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、作用域(scope...
    99+
    2023-07-02
  • javascript作用域和作用域链详解
    目录一、javascript的作用域1、全局作用域2、局部作用域二、javascript的作用域链三、作用域链和优化四、改变作用域链1、with语法改变作用域链2、catch语法总结...
    99+
    2022-11-13
  • Javascript的作用域和作用域链是什么
    这篇文章主要介绍Javascript的作用域和作用域链是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Javascript 的作用域和作用域链作用域: 作用域是定义变量...
    99+
    2022-10-19
  • js作用域及作用域链工作引擎
    目录前言一、作用域(scope)1.作用域的分类2.函数体作用域3.块级作用域二、预编译三、作用域链前言 我们需要先知道的是引擎,引擎的工作简单粗暴,就是负责javascript从头...
    99+
    2022-11-13
  • 如何分析javascript作用域和作用域链
    如何分析javascript作用域和作用域链,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、javascript的作用域1、全局作用域1、最外层函数和最外层函...
    99+
    2023-06-28
  • JS作用域和作用域链的区别是什么
    本篇内容介绍了“JS作用域和作用域链的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!作用域(Sc...
    99+
    2022-10-19
  • JavaScript作用域链是什么及怎么使用
    这篇文章主要介绍了JavaScript作用域链是什么及怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript作用域链是什么及怎么使用文章都会有所收获,下面我们一起来看看吧。1. 作用域是什么...
    99+
    2023-07-04
  • JavaScript作用域和作用域链的示例分析
    这篇文章给大家分享的是有关JavaScript作用域和作用域链的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。作用域(Scope)1. 什么是作用域作用域是在运行时代码中...
    99+
    2022-10-19
  • JavaScript作用域链是什么
    本篇内容介绍了“JavaScript作用域链是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!作用域1....
    99+
    2022-10-19
  • Javascript的作用域、作用域链以及闭包详解
    一、javascript中的作用域 ①全局变量-函数体外部进行声明 ②局部变量-函数体内部进行声明 1)函数级作用域 javascript语言中局部变量不同于C#、Java等高级语言...
    99+
    2022-11-13
  • JavaScript的作用域链有什么用
    JavaScript的作用域链有什么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript的作用域链这是一个非常...
    99+
    2022-10-19
  • Javascript之作用域、作用域链、闭包的示例分析
    这篇文章主要介绍Javascript之作用域、作用域链、闭包的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是作用域?作用域是一种规则,在代码编译阶段就确定了,规定了变量...
    99+
    2022-10-19
  • JS作用域作用链及this使用原理详解
    目录变量提升的原理:JavaScript的执行顺序第一部分:变量提升部分的代码第二部分:代码执行部分代码执行阶段调用栈:栈溢出的原理如何利用调用栈1.使用浏览器查看调用栈的信息2.小...
    99+
    2022-11-13
    JS作用域作用链this JS作用域作用链
  • python作用域怎么用
    小编给大家分享一下python作用域怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!作用域变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Pyth...
    99+
    2023-06-17
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作