作用域

一、作用域与作用域链

作用域:定义变量的区域,它有一套访问变量的规则,这套规则用来管理浏览器浏览器引擎如何在当前作用域以及在潜逃的作用域中根据变量去寻找变量。

作用域链:保证执行环境对有权访问的所有变量和函数的有序访问,通过作用域链,我们可以访问到外层的环境的变量和函数。作用域的本质是一个指向变量对象的指针列表,作用域的前端失踪指向当前执行上下文的变量对象,全局执行上下文的变量对象是作用域的最后一个对象。

当我们寻找一个变量时,如果当前执行环境未查找到,我们可以沿着执行韩静向后查找,作用于链的创建跟执行上下文的创建有关。

作用域分为三个部分:

1、全局作用域

  全局变量是挂在在Windows对象下的变量,所以在网页的任何位置都可以访问并使用

2、函数作用域

函数中定义的变量是函数变量,所以函数的作用域就是函数的内部。当函数执行完成后,这个函数变量也会被销毁,所以在外部是无法访问该变量。

3、块级作用域(const、let可产生)

let定义的变量只能在块级作用域中被访问,在js代码中,if 语句及 for 语句后面 {...}所包括的就是块级作用域。

一旦将函数嵌套起来,就会形成作用域链,作用域链在定义的时候就被确定,和尖头函数的this指针一样,后续不会改变。

posted @ 2022-02-17 16:37  大坏坏狼  阅读(132)  评论(0)    收藏  举报