数据类型
数字与字符串
都是一,为什么要分1和'1'
功能不同
- 数字是数字,字符串是字符串,要严谨
 - 数字能加减乘除,字符串不行
 - 字符串能表示电话号码,数字不行
 
存储形式不同
- JS中,数字是用64位浮点数的形式存储的
 - JS中,字符串是用类似的UTF8形式存储的(UCS-2)
 
二进制
如何存数字?十进制转二进制
10转2
31变成二进制:
31 = 0 × 2^5 + 1 × 2^4 + 1 × 2^3 + 1 × 2^2 + 1 × 2^1 + 1 × 2^0
31(十进制) = 011111(二进制)
2转10
100011变成十进制:
100011 = 1 × 2^5 + 1 × 2^1 + 1 × 2^0 = 35
每一位乘以2的N次方,然后加起来即可
数字 number
64位浮点数
写法
- 整数写法:1
 - 小数写法:0.1
 - 科学计数法:1.23e4
 - 八进制写法:0123或00123或0o123
 - 十六进制写法:0x3F或0X3F
 - 二进制写法:0b11或0B11
 
特殊值
- 正0和负0,都等于0
 - 无穷大:Infinity / +Infinity / -Infinity
 - 无法表示的数字:NaN(Not a Number)
 
字符串 string
每个字符两个字节
- 单引号:'你好'
 - 双引号:"你好"
 - 反引号:
你好 
注意:引号不属于字符串的一部分
在单引号里面包含单引号:
- 'it's ok'
 - "it's ok"
 it's ok
布尔 boolean
只有两个值:true和false,注意大小写
下列运算符会得到bool值:
- 否定运算:!value
 - 相等运算:1==2 / 1!=2 / 3===4 / 3!==4
 - 比较运算:1>2 / 1>=2 / 3<4 / 3<=4
 
转义
用一种写法表示你想要的东西:
- ' 表示 '
 - " 表示 "
 - \n 表示 换行
 - \r 表示 回车
 - \t 表示 tab制表符
 - \ 表示 \
 - \uFFFF 表示对应的Unicode字符
 - \xFF 表示前256个Unicode字符
 
base64转码
- window.btoa:正常字符串转为Base64编码的字符串
 - window.atob:Base64编码的字符串转为原来的字符串
 
JS中的数据类型
7种(大小写无所谓):
- 数字 number
 - 字符串 string
 - 布尔 bool
 - 符号 symbol
 - 空 undefined
 - 空 null
 - 对象 object
 - 总结:四基两空一对象
 
以下不是数据类型:
数组、函数、日期,它们都属于object
五个falsy值:
falsy就是相当于false但又不是false的值
分别是:
- undefined
 - null
 - 0
 - NaN
 - ''
 
变量声明
三种声明方式:
var a = 1
let a = 1
const a = 1
区别:
- var 是过时的、不好用的方式
 - let是新的,更合理的方式
 - const是声明时必须赋值,且不能再改的方式
 
类型转换
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(x)