# 作用域
> 可访问变量的集合(对象、函数)
> 我们定义了一个变量,这个变量可以被使用的地方,可以使用的范围
# 函数
> 全局作用域(全局变量):在函数外定义,在所有地方都能被访问
> 局部作用域(局部变量):在哈数里面定义的变量,只能在函数里面被访问
# 作用域的工作模式
![](https://box.kancloud.cn/e96b614047c48eb03681069ae6ecc74e_278x120.jpg)
## 题目一
```
<script>
console.log(a);
//function a() {console.log(4);}
var a = 1;
console.log(a);
//1
function a(){console.log(2)};
console.log(a);
//1
var a = 3;
console.log(a);
//3
function a() {console.log(4);}
console.log(a);
//3
a();
//错误: a is not a function
</script>
```
![](https://box.kancloud.cn/71c8e1331af417affc1210ccc6933db5_249x120.jpg)
## 题目二
```
var a = 1;
function fn1(a) {
console.log(a);
a = 2;
}
fn1();
console.log(a);
```
等同于如下
```
var a = 1;
function fn1(a) {
console.log(a);
a = 2;
}
fn1();
console.log(a);
```
> 结果:undefined
> 1
## 题目三
```
var a = 1;
function fn1() {
console.log(a);
//1
a = 2;
}
fn1();
console.log(a);//2
```
![](https://box.kancloud.cn/ee38bd3fee34460c65db85fedb6f58b1_751x358.png)
- 1.JS的基础知识
- (1)调试
- (2)变量
- (3)数据类型
- 数据类型之间的转换
- (4)全局变量和局部变量
- (5)运算符和表达式
- (6)数组
- 2.控制语句DOM,BOM,事件
- (1)控制语句
- (2)DOM的基础
- 节点
- 改变样式
- DOM事件
- 3.函数
- (1)声明函数
- (2)构造函数
- (3)函数的参数
- (4)函数的传参
- (5)改变this
- (6)重载
- (7)回调函数
- 4.数组
- (1)创建数组
- (2)增删改查
- (3)字符串与数组的转换
- 5.正则
- (1)创建正则
- (2)字符串中支持正则
- (3)语法
- 最核心的元字符
- 6.ajax
- (1)原生ajax
- (2)http,get,post
- (3)跨域
- (4)jQuery-ajax
- (5)axios
- 7.面向对象
- (1)原型
- (2)原型链,继承
- (3)多态
- 8.es6小结
- 9.js+canvas实现验证码
- 10.js的作用域
- 11.闭包
- 实例
- toggle
- 图片切换
- swiper
- 遮罩颜色渐变
- 表格添加
- 瀑布流
- ajax数据请求渲染
- 百度地图