美文网首页
作用域与作用域链

作用域与作用域链

作者: 超级关 | 来源:发表于2018-10-18 22:43 被阅读0次

作用域

通常代码中变量和函数并不总是可用的,而限定他们可用范围就被称作为作用域。作用域被分为全局作用域和局部作用域两种。

  • 全局作用域:即在全局当中任何地方都可用的的作用域,属于window下的作用域。
  • 局部作用域:只能在函数内部访问的作用域,变量和函数不能和外界共用。

作用域链

每当声明一个函数的时候会有一个独立的的作用域,遇到函数执行需要调用某一个变量的时候,需要先在当前函数的作用域下寻找。如果当前函数的作用域下找不到该值变量,就需要进入到创建该函数所在的作用域下寻找,以此往上直至找到为止。这样就形成了一条作用域链。

举个例子

作用域链.png

例如上述代码,
在function fn1内是一个独立的作用域,在function fn2和function fn3中又是两个独立的作用域。当输出fn1的时候,需要先找到fn1下返回fn3的值。对应到fn3中需要找到fn2输出的a。而在fn2的作用域中,找不到变量a,需要返回到创建function fn2的作用域下寻找,即fn1的作用域中,得到var a = 2,因此代码输出结果为2。

需要遵循以下三条原则
  1. 函数在执行的过程中,先从自己内部找变量
  2. 如果找不到,再从创建当前函数所在的作用域去找, 以此往上
  3. 注意找的是变量的当前的状态

相关文章

  • 作用域链和闭包

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

  • JavaScript 作用域链与闭包

    作用域链与闭包 了解作用域链之前需要先了解下作用域是什么。 作用域 几乎所有的语言都有作用域的概念。这是因为它们都...

  • JavaScript核心技术开发解密读书笔记(第五章)

    第五章 作用域与作用域链 1. 作用域 常见的作用域有两种,全局作用域和函数作用域。ES6中新增了块级作用域。全局...

  • 作用域和作用域链

    作用域和作用域链 作用域 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在Java...

  • web性能实践

    一. 作用域 前面我们了解作用域概念的以及作用域链是如何运作的。 随着作用域链中的作用域数量的增加,访问当前作用域...

  • JavaScript系列——作用域链

    作用域与作用域链 首先,什么是作用域?先看看 MDN文档的定义: The current context of e...

  • JavaScript函数的执行-作用域链、执行上下文、闭包

    1、作用域与作用域链 作用域 作用域是指程序源代码中定义变量的区域。 作用域规定了如何查找变量,也就是确定当前执行...

  • js中作用域与作用域链

    js中作用域与作用域链 作用域 *作用域基本概念 作用域一般指变量的作用范围,变量分为全局变量和局部变量,对应的作...

  • 作用域链

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

  • 作用域/作用域链 闭包及其使用

    一、作用域、作用域链 作用域(scope) 浅显的理解: 作用域就是变量的可用范围(scope) 为什么要有作用域...

网友评论

      本文标题:作用域与作用域链

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