美文网首页
关于作用域链的一些知识

关于作用域链的一些知识

作者: 猢狲宙斯 | 来源:发表于2018-12-05 21:43 被阅读0次

        要了解做作用域链,我们首先要搞清什么是作用域

        作用域(scope)指的是一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围即作用域。

        作用域被分为全局作用域(globe scope)和局部作用域(local scope)。顾名思义局,全局作用域是在全局范围内使代码都能够有效访问使用,而局部作用域一般只在固定的代码片段内可以访问得到。例如:

var a = 1

function fn1(){

  function fn3(){

    function fn2(){

      console.log(a)

    }

    fn2()

    var a = 4

  }

  var a = 2

  return fn3

}

var fn = fn1()

fn()

        这段代码中var a = 1是在全局作用域下的申明,而被函数包裹的var a = 4以及var a = 2就是在局部作用域下的申明。

        全局作用域和局部作用域中变量的访问权限,其实是由作用域链决定的。

        每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链。作用域链是函数被创建的作用域中对象的集合。作用域链可以保证对执行环境有权访问的所有变量和函数的有序访问。

  作用域链的最前端始终是当前执行的代码所在环境的变量对象(如果该环境是函数,则将其活动对象作为变量对象),下一个变量对象来自包含环境(包含当前还行环境的环境),下一个变量对象来自包含环境的包含环境,依次往上,直到全局执行环境的变量对象。全局执行环境的变量对象始终是作用域链中的最后一个对象。

  标识符解析是沿着作用域一级一级的向上搜索标识符的过程。搜索过程始终是从作用域的前端逐地向后回溯,直到找到标识符(找不到,就会导致错误发生)。

作用域链相关知识的总结:

1.执行环境决定了变量的生命周期,以及哪部分代码可以访问其中变量。

2,执行环境有全局执行环境(全局环境)和局部执行环境之分。

3.每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链。

4.函数的局部环境可以访问函数作用域中的变量和函数,也可以访问其父环境,乃至全局环境中的变量和环境。

5.全局环境只能访问全局环境中定义的变量和函数,不能直接访问局部环境中的任何数据。

6.变量的执行环境有助于确定应该合适释放内存。 


相关文章

  • 关于作用域链的一些知识

    要了解做作用域链,我们首先要搞清什么是作用域。 作用域(scope)指的是一段程序代码中所用到的名...

  • JS基础知识:变量对象、作用域链和闭包

    JS基础知识:变量对象、作用域链和闭包 前言:这段时间一直在消化作用域链和闭包的相关知识。之前看《JS高程》和一些...

  • 现阶段对于前端成长的困惑

    js权威指南,关于作用域链,全局作用域,函数作用域,基本已经全部了解了。闭包,原型继承,借用函数也很了解了,一些设...

  • JavaScript中的变量查找

    众所周知,JavaScript变量是按照作用域链来进行查找的(作用域和作用域链相关知识可参看我的另一篇文章,《基于...

  • 2018-01-07 关于javascript闭包和作用域的理解

    关于 javascript 闭包的一些思考 作用域 词法作用域 函数作用域 块作用域 闭包 什么是作用域? 作用域...

  • 作用域链

    作用域链 作用域:就近原则在写下声明就能确定的,叫做词法作用域 词法作用域可以确定是哪个a,但不能确定a的值 关于...

  • 作用域链和闭包

    在谈作用域链之前先说一下与作用域链关系紧密的执行环境和作用域。 作用域:作用域指的是变量的适用范围。 作用域链:作...

  • #hello,JS:14闭包(词法作用域)

    前言: 看过一些相关文章,知道想理解闭包,词法作用域和作用域(链)是非常重要的前置知识,结合之前所学,可以继续学习...

  • 作用域链

    作用域链 把多个作用域串起来便形成了作用域链;每个函数在初始化完成之后就拥有了各自的作用域链,但此时的作用域链中并...

  • 前端进击的巨人(三):从作用域走进闭包

    进击的巨人第三篇,本篇就作用域、作用域链、闭包等知识点,一一击破。 作用域 作用域:负责收集并维护由所有声明的标识...

网友评论

      本文标题:关于作用域链的一些知识

      本文链接:https://www.haomeiwen.com/subject/aclgcqtx.html