JS作用域/作用域链/变量提升----3
1|0作用域
作用域指一个变量的作用的范围 作用范围==作用域
作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。
例如:
在 JavaScript 中有两种作用域类型:
(1)全局作用域
(2)局部作用域(函数作用域 )
1|1全局作用域
直接写在 script 标签中的 JavaScript 代码都是全局作用域。当页面打开运行时全局作用域就会自动创建,而当页面关闭时就会销毁。在全局作用域中有一个全局的 window 对象可以使用,而所有全局作用域对象都会作为 window 对象的属性来使用。(为什么全局变量不会销毁,因为js执行时从上往下执行,不清楚在下面的代码中这变量有没有使用)
在js代码里这个a不论在哪里都可以使用,使用完了之后,他还是存在,这种情况,变量a为全局变量
1|2局部作用域(函数作用域)
作用于函数内的代码环境,就是局部作用域。由于跟函数有关,所以也称为函数作用域。
局部作用域(函数作用域)是在调用函数时才会被创建,函数执行完毕后就自动销毁。同时,每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。
在函数作用域中可以访问全局作用域,而在全局作用域中不能访问函数作用域。当在函数作用域中使用一个变量时,它会先在自身作用域内查找,如果找到就直接使用,如果没有找到则会向上一级作用域查找,直到找到全局作用域为止。如果都没有找到则会报错。
当直接赋值没有声明的时候,这个变量会自动成为全局变量
2|0作用链
作用域的集合就是作用域链(子集可以访问父集,父集不能访问子集)
从作用域链的结构可以看出,函数在执行的过程中,先从自己内部寻找变量,如果找不到,再从创建当前函数所在的作用域去找,从此往上,也就是向上一级找,直到找到全局作用域还是没找到。
作用域代码优化:在运行期上下文的作用域链中,标识符所在的位置越深,读写速度就会越慢。所以在编写过程中,尽量的使用局部变量,少使用全局变量
执行顺序:就近原则
__EOF__

本文作者:长安
本文链接:https://www.cnblogs.com/jingxin01/p/16393640.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/jingxin01/p/16393640.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)