## 分支语句
+ if..else
+ switch..case
```js
switch(变量){
case 可能值:
语句;
break
case 可能值:
语句;
break
case 可能值:
语句;
break
default:
默认语句
}
```
+ if语句和switch语句
## 循环
+ 含义
+ 四要素
+ while
+ do..while
+ for
```js
for(初始化条件;条件判断;条件变化){
循环体代码
}
```
+ break
+ continue
+ 循环嵌套
## 函数 function
+ 含义: 将一段代码以命名方式存储到一个盒子里面 在要使用代码的时候可以根据这个名称找到这段代码然后执行
+ 语法:
- 定义函数: 存代码
```js
function 函数名(){
一段代码
}
```
- 调用函数: 使用代码
```js
函数名()
```
+ 函数优点
- 复用代码
- 方便代码的维护 只需要该定义的位置 所有调用的地方都会变化
+ 函数参数的个数关系
- 形参个数和实参相等 实参会从左往右一一给形参赋值
- 形参个数大于实参 多余的形参它的值是undefined
- 形参个数小于实参 多余的实参相当于白给了
+ 函数的返回值
- 返回值: 函数在调用位置得到的结果
- 函数会有一个默认的返回值undefined
- 如果我们希望函数有一个自定义的返回值 只需要在函数中写上`return 数据` 这个数据就会当做函数的返回值
- 如果函数调用之后得到一个结果 我们需要拿到这个结果进行下一步运算或者判断 这时候函数就需要有返回值
## 函数定义两种方式
1. 声明式的定义
```js
function 函数名(){
一段代码
}
```
2. 赋值式的定义
```js
var 函数名 = function(){
一段代码
}
```
## 预解析 预编译 声明提前
+ js代码在执行之前浏览器有一个解析的过程
+ 在编译的阶段会通读整个js的代码 挑出中间某一些代码提前执行
+ 提前执行
1. 所有用var声明的变量 会将定义提前,只是定义提前 不会将赋值提前
2. 所有声明式的函数会提前定义
+ 影响
1. 所有用var声明的变量可以提前使用只是使用的值是undefined
2. 声明式函数可以在定义之前使用
## 作用域
+ 含义: 一个变量起作用的范围
+ 分类:
- 全局作用域
+ 不被函数包裹区域
- 局部作用域
+ 函数的内部(花括号)
+ 变量分类
- 全局变量
+ 在全局作用域里面定义的变量
+ 全局变量它可以在任何位置使用
- 局部变量
+ 在局部作用域里面定义的变量
+ 局部变量只能在当前的局部作用域使用