## JS中的变量
*简单数据类型
* 数字型 number
* 字符型 string
* 布尔型 boolean
* 未定义 undefined 变量声明不给值默认为undefined
* 空对象 null
* 复杂数据类型
## 数据类型检测 typeof()
*会把null检测为object,不准确
## 数据类型转换
* Number()
* 字符串:空字符串或者空白字符串为0;非空不为纯数字转化为NAN;
* 布尔类型·:true为1 false为0;
* undefined:NAN
* null:0
* 运算符和字符串 如:+‘123’会转化为数字型的123 或者‘123’-0
*paserInt:‘12.9px’ -> 12 会读取字符串直到第一个非数字出现,将读取到的数字转化为数字型
*paserfloat: '12.9px' ->12.9 同上
*隐式转换:-,*,/等运算 如‘123’-2 则会把‘123’转换为数字型123
* String()
* 数字加空字符串会转化为字符串类型(只要加号任意一侧存在字符串,则该加号会被理解为字符串拼接)
* toString()方法,undefined和null没有该方法
* Boolean()
* 只有 “0/NaN/null/undefined/空字符串” 最后是false,其余的都是true
* 数字 除了0为false,其他都为true
* 字符串 只有空字符串为false,空白字符串为true
* undefined 转为false
* null 转为false
* !undefined 表示true,是一种隐式转换 还有!!undefined 表示取反再取反,所表示的布尔值没有改变。
* 运算符
* +号,任何一侧有字符串都会被解析为字符串拼接
* -,*,/,%都正常执行,‘123’-2 中的字符串会被解析为数字型,如果无法计算就是NAN
* +=,-=,*=,/=
*比较运算符,=,==,===(区分数值类型),!=,!==