作用域、预解析(变量提升)

今天我们要复习的是关于javascript的高级进化,暴龙兽进化钢铁加鲁鲁兽!

在ECMA的基础语法中,我们复习完一些很基本的东西,实际这些东西真的很简单,但在今天我们学习的是高级,什么叫高级的东西,那就是可以方便我们做某个操作的行为。

 

作用域?

问:什么叫作用域?

答:你是你爸妈的孩子,不是我的!

我们知道在一个页面的代码中,有一个东西发挥着很重要的作用,那就是变量,几乎每个页面的JS代码中都会有大量的变量,但正是如此这就出现一个问题?

那就是我们在统一命名规范的时候,有时候脑子不够用啊,起的名字就那么多咋办啊,这是变量的作用域的作用就体现出来了。

言简意赅:作用域就是一个变量可被使用的一个范围。

 

作用域有两种:局部作用域、全局作用域

 

局部作用域:里面也有两种:函数作用域、块作用域

 

函数作用域就是只能在函数内部使用,不能被外部任何东西使用,快作用域就是{}在这个里面声明的变量,就只能在这个里面使用。(在函数中一旦函数结束运行,他的整个东西就废掉了),但是在实际使用中根本不可能直接创建一个{},块级作用域的意思是在使用中我们使用let和const声明变量的时候,这个这些变量只能在离自己最近的{}中被访问。

在使用,let和const声明的变量是不能被修改的,如果声明的是对象,则可以使用属性的方法来修改,常量也是使用let和const较多。

 

除了局部变量之外,还有一个全局变量,全局变量就是在script标签最外边声明的变量,他可以被任何访问,但是如果修改的话会影响她的原始值,但如果是被函数作用域或者块级作用域修改了,他只是暂时被改变了值,在函数外,{}外她还是之前的那个原始值。

 

当我们学习完作用域之后,我们就需要学习作用域链,我们不多讲大道理,其实很简单,就是你在你自己的地盘使用变量,但是你没有声明,那么就要到你上一级那里找变量的原始值,但是吧,你不能找比你低一级的,所以作用域链只能向上,而不能向下找。

是不是很简单,跟着我学保证你吃饭都饿不死!

 

局部作用域是在函数完成的时候被删除,而全局作用域是在页面被关闭时删除。

 

预解析

在javascript中会存在一个问题,那就是如果你的变量和函数没有被声明,也还是可以使用的,只是他的值

posted @ 2022-08-12 09:43  漫步火星  阅读(10)  评论(0编辑  收藏  举报