作用域、预解析(变量提升)
今天我们要复习的是关于javascript的高级进化,暴龙兽进化钢铁加鲁鲁兽!
在ECMA的基础语法中,我们复习完一些很基本的东西,实际这些东西真的很简单,但在今天我们学习的是高级,什么叫高级的东西,那就是可以方便我们做某个操作的行为。
作用域?
问:什么叫作用域?
答:你是你爸妈的孩子,不是我的!
我们知道在一个页面的代码中,有一个东西发挥着很重要的作用,那就是变量,几乎每个页面的JS代码中都会有大量的变量,但正是如此这就出现一个问题?
那就是我们在统一命名规范的时候,有时候脑子不够用啊,起的名字就那么多咋办啊,这是变量的作用域的作用就体现出来了。
言简意赅:作用域就是一个变量可被使用的一个范围。
作用域有两种:局部作用域、全局作用域
局部作用域:里面也有两种:函数作用域、块作用域
函数作用域就是只能在函数内部使用,不能被外部任何东西使用,快作用域就是{}在这个里面声明的变量,就只能在这个里面使用。(在函数中一旦函数结束运行,他的整个东西就废掉了),但是在实际使用中根本不可能直接创建一个{},块级作用域的意思是在使用中我们使用let和const声明变量的时候,这个这些变量只能在离自己最近的{}中被访问。
在使用,let和const声明的变量是不能被修改的,如果声明的是对象,则可以使用属性的方法来修改,常量也是使用let和const较多。
除了局部变量之外,还有一个全局变量,全局变量就是在script标签最外边声明的变量,他可以被任何访问,但是如果修改的话会影响她的原始值,但如果是被函数作用域或者块级作用域修改了,他只是暂时被改变了值,在函数外,{}外她还是之前的那个原始值。
当我们学习完作用域之后,我们就需要学习作用域链,我们不多讲大道理,其实很简单,就是你在你自己的地盘使用变量,但是你没有声明,那么就要到你上一级那里找变量的原始值,但是吧,你不能找比你低一级的,所以作用域链只能向上,而不能向下找。
是不是很简单,跟着我学保证你吃饭都饿不死!
局部作用域是在函数完成的时候被删除,而全局作用域是在页面被关闭时删除。
预解析
在javascript中会存在一个问题,那就是如果你的变量和函数没有被声明,也还是可以使用的,只是他的值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)