# JS数据类型
数字
number字符串string布尔bool符号symbol空undefined空null对象object
# number
特殊值: 正0和负0、无穷大 、NaN

# string
用法:单引号、双引号、反引号


属性:
获取长度
String.length通过下标读取字符String[index]

'\n\r\t'.length         //3
''.length               //0
' '.length              //1
//index是从0开始
base64转码
window.btoa:正常字符转为Base64编码的字符串 window.atob:Base64编码的字符串转为原来的字符串

# boolean
值:true /  false
if 语句与bool
if (value) {...}
如何判断value值?
- value值是bool值,则按相应值处理
- value值不是bool值,除了五个falsy值被转为false,其他值都视为true。
- falsy值:undefined、null、0、NaN、''
if ('') {
  console.log(true);
}
// 没有任何输出
上面代码的if命令后面的判断条件,预期应该是一个布尔值,所以JavaScript自动将空字符串,转为布尔值false,导致程序不会进入代码块,所以没有任何输出。
需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true
if ([]) {
  console.log(true);
}
// true
if ({}) {
  console.log(true);
}
// true
# undefined、null

# 变量声明
- let声明
1.遵循块作用域,即使用范围不能超出{} 2.不能重复声明 3.可以赋值,也可以不赋值 4.必须先声明后使用,否则报错 5.全局声明的let变量,不会变成window的属性 6.for循环与let配合


- const声明
1.遵循块作用域,即使用范围不能超出{} 2.不能重复声明 3.必须先声明后使用,否则报错 4.声明时需赋值,赋值后不能修改 5.全局声明的const变量,不会变成window的属性


# 类型转换
- number => string
String(n)n + ''

- string => number
Number(s)parseInt(s)/parseFloat(s)s - 0

- x => bool
Boolean(x)!!x

- x => string
String(x)x.toString()

