JavaScript学习(五十八)—作用域链

一、作用域链

  • 在每个作用域中都有一个对象,这个对象被称为变量对象。

  • 变量对象的作用就是用来管理该作用域下面定义的变量和函数的,也就是在该作用域下面定义的变量和函数都可以被看做是变量对象的属性和方法。

  • 全局作用域下面的变量对象就是window对象。

二、那么到底什么是作用域链?

  • 即在函数内部有一个属性[Scope]属性,该属性指向一个集合,这个集合保存的就是当前函数作用域下面变量对象的地址和它上级作用域变量对象的地址,我们把这个集合就称为作用域链。

  • 当在使用变量时,会先从当前作用域下面变量对象身上查找是否有这个变量,如果有则返回其对应的值。

  • 如果没有则沿着作用域链向上级对象身上查找,如果有则返回对应的值,如果没有则继续向上级作用域中查找,当找到window对象时依然没有查找到,则报错。

文字太抽象了,画图解释一下吧,先看下面这段小代码

JavaScript学习(五十八)—作用域链相关推荐

  1. JavaScript学习(十八)--鼠标事件(鼠标点击松开移动效果)

    目录 鼠标的单击事件 鼠标的松开或按下事件 鼠标的移入/移出事件 鼠标移动事件 鼠标单击事件和鼠标双击事件 鼠标拖拽事件 鼠标和键盘事件是在页面操作中使用最频繁的操作,可以利用鼠标事件在页面中实现鼠标 ...

  2. 夜光带你走进JavaScript(五十八)擅长的领域

    夜光序言: 人生旅途上,横竖都是路,决定今天的不是今天,而是昨天对人生的态度:决定明天的不是明天,而是今天对事业的作为.我们的今天由过去决定,我们的明天由今天决定~~ 正文: JavaScript 计 ...

  3. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  4. JavaScript学习(十五)—内部样式与外部样式的修改与设置

    JavaScript学习(十五)-内部样式与外部样式的修改与设置 (一).行内样式 获取方式:元素节点.style.CSS属性名称: 注意:如果CSS属性中包含"-",那么需要采用 ...

  5. 五十八、深入了解 Java 中的注解和自定义注解

    @Author:Runsen @Date:2020/7/9 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  6. 罗马音平假名片假名转换器_零基础日语萌新该如何学习五十音?

    在这里跟小伙伴们讲一下如何学习日语50音.五十音就像我们的二十六个字母一样.如果我们不能熟练地写和发音五十种音调,我们就无法很好地继续学习. 日语五十音图 https://sourl.cn/rMFhZ ...

  7. [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. 花书+吴恩达深度学习(十八)迁移学习和多任务学习

    目录 0. 前言 1. 迁移学习 2. 多任务学习 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十八)迁移学习和多任务学习 花书+吴恩达深度学习(十 ...

  9. JavaScript学习(十六)—实现购物车加减数量,计算总金额

    JavaScript学习(十六)-实现购物车加减数量,计算总金额 代码如下: <table border="2" cellspacing="0" soli ...

最新文章

  1. activity 启动模式_腾讯大牛:你根本不懂Activity!
  2. 解决IIS中HTTP/1.1 500 Server Error错误的方法
  3. 【数据挖掘笔记一】引论
  4. Python入门100题 | 第043题
  5. 专科学会计还是计算机应用技术好,专科毕业想要学习会计专业,我专科是学计算机应用,但是毕业后家里让我学会计这门专业,具体是该怎么办呢...
  6. LeetCode 349. 两个数组的交集(哈希)
  7. java连接access驱动_Java 连接Access
  8. VS中Debug和Release版本的区别
  9. ssh远程执行命令 linux,【Linux】SSH 远程执行命令
  10. 解决WARN TaskSchedulerImpl: Initial job has not accepted any resources;
  11. Netty技术细节源码分析-Recycler对象池原理分析
  12. 微信分享到朋友圈onMenuShareTimeline成功后的回调函数在某系ios手机下不执行的问题...
  13. jsp开发教程之 仿MOP论坛 二(数据库,界面设计篇)
  14. linux下mysql5.7环境
  15. Java实现昵图网摄影图片爬虫
  16. js判断数组的六种方法
  17. 世界五百强面试题计算机,世界五百强IT企业最新C++经典面试题及答案
  18. Android 进阶——系统启动之BootLoader 简介及内核启动(一)
  19. 移动电影院为小众精品影片提供更广大的生存空间
  20. 计算机中数值怎么比较大小,数值比较器,数值比较器的作用和原理是什么?

热门文章

  1. SQL数据查询之——嵌套查询
  2. 2017.11.24
  3. java中String字符串的替换函数:replace与replaceAll的区别
  4. How to Install MariaDB 10 on CentOS 6.7
  5. 删除IE 下输入后的清除小叉叉
  6. Linux内核将用Nftables替代iptables
  7. [转载].一直不怎么明白PID的运算输出结果怎么换算成执行机构的控制量
  8. 下 文库 试读_数字资源专题导览 | 科学文库简介
  9. 【Liteos系列】之osCmdReg
  10. java线程使用不当,java多线程使用不当造成的问题