美文网首页JS
js的作用域及作用域链

js的作用域及作用域链

作者: 毅冷锋 | 来源:发表于2018-01-18 16:55 被阅读0次

前言

最近学习到js作用域,作为学习总结,写下这篇文章,若有不对的地方,还请不吝赐教

作用域是什么

  • 在电脑程序设计中,作用域(scope,或译作有效范围)是名字(name)与实体(entity)的绑定(binding)保持有效的那部分计算机程序。不同的编程语言可能有不同的作用域和名字解析。而同一语言内也可能存在多种作用域,随实体的类型变化而不同。作用域类别影响变量的绑定方式,根据语言使用静态作用域还是动态作用域变量的取值可能会有不同的结果。----维基百科
  • 我的理解作用域就是生效的区域,打个不恰当的比方,例如html里的块级元素,它是不是占有独立的位置,对于这个元素所添加的css,是不是只会在这个元素内部生效?

js的作用域又是什么呢?

  • 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找。
    这里的标识符,指的是变量名或者函数名
  • 我的感觉其实就是变量生效的具体区域

js作用域的类别

  • 全局作用域
  • 局部作用域: 函数作用域
  • 注意没有块级作用域
  • 全局作用域的变量,相当于window的一个属性
    看下面代码


    360截图164912219799123.png

什么又是作用域链呢?

  • 作用域链,是由当前环境与上层环境的一系列变量对象组成,它保证了当前执行环境对符合访问权限的变量和函数的有序访问。

  • 前面说了作用域是一种规则,那么作用域链就是这个规则的体现


    360截图165505039579122.png
  • 上图的箭头就是作用域链的实际体现

  • 也是就是作用域链是从最前端向最后端的一个单方向的通道,也就是作用域链是由一系列变量对象组成,我们可以在这个单向通道中,查询变量对象中的标识符,这样就可以访问到上一层作用域中的变量了。


写在最后

这篇文章毕竟只是学习总结,所以有不对的地方,请大家多多提醒,我一定虚心学习

相关文章

  • 干货!月薪80k前端大佬面试笔记:JS闭包解析!

    三点注意事项 JS没有块级作用域,只有全局作用域和局部作用域(函数作用域)。 JS中的作用域链,内部的作用域可以访...

  • 2018-12-18

    JS高级 作用域&作用域链 作用域: 1.作用域的个数:n(函数声明的个数)+1(全局作用域)2.作用域不会存储变...

  • 作用域和作用链

    关键词:作用域作用链 作用域 js中没有块级作用域 全局作用域,函数作用域太简单,就不演示(≧▽≦)/啦啦啦 作用...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • JS 作用域链、导入导出

    1. JS 的作用域链 作用域在 JS 中表示变量的可访问性和可见性。JS 作用域有 3 种:1. 全局作用域;2...

  • js作用域及作用域链

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

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • js 作用域链 和 原型链

    作用域链 js拥有全局作用域(window)、函数作用域、块级作用域(es6)。块级作用域是es6开始才拥有的,因...

  • JS博客

    JS构造函数及new运算符 JS原型对象和原型链 函数作用域和作用域链 干货分享:让你分分钟学会JS闭包 深入理解...

  • JavaScript散乱(四、细节)

    js高级 案例问题 作用域和作用域链 全局作用域也就是window和函数作用域,不考虑es6的块级作用域前提下,作...

网友评论

    本文标题:js的作用域及作用域链

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