## 数据类型转换
+ 手动类型转换(强制类型转换)
+ 自动类型转换(隐式类型转换)
+ 其他类型转数值
- 方法
+ Number()
+ parseInt()
+ parseFloat()
+ 其他类型转字符串
- 方法
+ String()
+ 数据.toString()
+ 其他类型转布尔值
- 方法
+ Boolean()
## NaN
+ not a number
+ 代表数值类型的非数字
+ 产生
1. 其他转数值
2. 计算
+ 注意事项
1. NaN和任何数做任何比较结果都是false 包括自己 (NaN==NaN)
2. NaN和任何数做任何运算结果都是NaN (NaN/NaN) (NaN-NaN)
## 运算符
+ 数学运算符
+ 比较运算符
- `== ===`
+ 赋值运算符
- `=`
- `a+=b`
+ 逻辑运算符
- &&
- ||
- !
- 短路问题
+ 一元运算符
- a++
- ++a
- a--
- --a
+ 三目运算符
- 条件?条件成立时候执行:条件不成立时候执行
## 分支语句
+ if..else的语法
+ 单分支
+ 双分支
+ 多分支
+ switch..case语法
```js
switch(变量){
case 可能值:
语句01
case 可能值:
语句02
...
default:
默认语句
}
```
- 变量和可能值比较是全等比较
## if语句和switch语句区别
+ 当条件是一个范围 只能用if语句
+ 当条件是几个可能值 既可以使用if语句 也可以使用switch语句
## 程序三大结构
+ 顺序结构
+ 分支结构
+ 循环结构
## 循环
+ 含义:重复执行一段代码
+ 构成要素
1. 初始化条件
2. 条件判断
3. 循环体代码
4. 条件变化
+ while循环
```js
初始化条件
while(条件判断){
循环体代码
条件变化
}
```
+ do..while循环
```js
初始化条件
do{
循环体代码
条件变化
}while(条件判断)
```
+ while循环和do..while循环的区别
- 在于第一次循环体代码是否执行 do..while至少会执行一次循环体代码
+ for循环
```js
for(初始化条件;条件判断;条件变化){
循环体代码
}
```
+ for执行的顺序
1. 执行初始化条件
2. 执行条件判断
- 满足 执行3
- 不满足 结束循环
3. 执行循环体代码
4. 执行条件变化
5. 返回2
## continue和break关键字
+ continue继续
- 跳过本次循环直接进入下一次循环
+ break终止
- break终止当前循环
+ document.write(内容)
## 循环嵌套
+ 一个循环里面嵌套了另一个循环
+ 嵌套的循环 不能使用相同的变量名来计数
+ 每一次外循环都会等待内循环执行结束