ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 1、作用域分类 作用域指的是变量起作用的范围。 分为**全局作用域**和**局部作用域**。其中局部作用域也叫做函数作用域。 # 2、作用域规则 规则一:函数可以使用函数以外的变量 ![](https://img.kancloud.cn/20/a3/20a355d1198bb21b1e22172e26b9c278_723x170.png) 规则二:函数内部,优先使用函数内部的变量 ![](https://img.kancloud.cn/5f/34/5f342f6533c386eac2290bca6c62789e_799x167.png) 函数内部也会发生变量提升: ![](https://img.kancloud.cn/a2/0d/a20d9b0d0b6c418a9bb05301217112de_715x141.png) 规则三:函数内部没有用var声明的变量,也是全局变量 ![](https://img.kancloud.cn/d5/2e/d52e84a4c679e6adea5cbbd490cbeba2_671x194.png) # 3、作用域链 代码: ``` var a = 10; function fn1(){ var a = 20; function fn2(){ var a = 30; console.log(a); } fn2(); } fn1(); // ``` 下面是对应的图示: ![](https://img.kancloud.cn/7b/07/7b0707ecdb257527c7f5cac4b1a659de_530x280.png) 在内部函数中查找变量的时候,优先从函数内部自身查找,如果没有查到,则向外层查找,如果外层还没有,则继续向上一层查找,一直查询到全局作用域。这种链式的查找方式就是作用域链。