JS中的数据类型
01 共7种类型(大小写无所谓)
- 数字 number
- 字符串 string
- 布尔 bool
真或假,只有两个值
true和false,注意大小写 - 符号 symbol(用得少)
- 空 undefined
- 空 null
- 对象 object(另讲)
- 总结:四基两空一对象
02.以下不是数据类型
- 数组、函数、日期(都是特殊的对象)
- 以上都属于object
1.数字 number
64位浮点数
1.1 写法
一般前三个用的较多
1.2 特殊值
- 正0 和 负0
都等于0 ,要严谨
区别点:1/0=正无穷,1/+0=正无穷,1/-0=负无穷
- 无穷大
Infinity、+Infinitely、-Infinitely - 无法表示的数字
NN(Not a Number):不能表示的数字
NAN不等于
但它是一个数字,因为之所以写成NAN是因为知识受限,还有很多没有认知,而不是不存在
1.3 64位浮点数
- JS数字的存储形式
浮点数就是浮动的点,意思是小数点会乱动
如:123.456
可以表示为1.23456e10^2
或者12345.6e10^2
- 浮点数在内存中的存储方式
例如:浮点数5.2的存储方法
1.转换为二进制(小数点前后都转):5. = 101.
0.2 = .00110011001100110011
(小数则是2^-n
)
2.用科学计数法表示,保证小数点前只有一个bit(1)
1.0100110011001100110011 * 2^2
3.则存储方式为:
符号:0
指数:2
基数:0100110011001100110011
(省掉前面的1) - 64位存储一个number
符号占1位
指数占11位(-1024~1024)
有效数字占52位(开头省略1)
1.4范围和精度
- 将指数、有效数字的正向和负向拉满得到最大最小值
- 最多只能到52+1个二进制位表示有效数字
2.字符串string
每个字符两个字节(阉割版UTF8)
定长的只用两个字节,超过了就不能表示
2.1 写法
- 单引号:
'你好'
- 双引号:
"你好"
- 反引号: ` (ESC下面的键)
- 注意
1.引号不属于字符串的一部分,就像书名号不属于书名的一部分一样
2.如果单引号里面包含单引号怎么办?——转义
2.2 转义
用另一种写法表示你想要的东西
2.2.1 单引号里面包含单引号:
- 错误写法:
'it's ok'
JS会认为在'it'
就结束了 - 正确写法
1.'it\'s ok'
这就是转义,在符号前加
2.交替使用:"it's ok"
(反引号同理)
2.2.2 常见转义
-
\'
表示 `’ -
\"
表示"
-
\n
表示 换行 -
\r
表示 回车 -
\t
表示 tab制表符 -
\\
表示\
因为一个\后面会接东西,所以要两个
-
\uFFFF
表示对应的Unicode字符 -
\xFF
表示前256个Unicode字符
2.3 多行字符串
想在字符串里回车,用反引号扩起来
let s = `这样是
可以的
反引号很容易做到`
2.4 字符串的属性
只有对象才有属性,字符串按道理是没有属性的,这里等对象讲解完可以解释
2.4.1 字符串的长度
string.length
2.4.2 通过下标读字符
string[index]
如:let s = 'hello'
中,s[0]
表示h
- 注意
index
从 0 开始,最大值为长度减 1
2.5 base64转码 window.btoa('字符串')
正常字符串转为base64编码字符串window.atob('字符串')
Base64编码的字符串转为原来的字符串- 一般用来隐藏招聘启事里的简历
3.布尔 boolean
真或假
只有两个值:true和false(注意大小写)
3.1 下列运算会得到bool值
- 否定运算
!value
取这个值的反 - 相等运算
1==2、1!=2、3===4、3!==4
,分别得到:false、true、false、true(两个和三个等好都可以) - 比较运算
1>2、1>=2、3<4、3<=4
,分别得到:false、false、true、true
3.2 if 配 bool
- if语句常常需要判断真假
if(value){...}else{...}
,括号中间需要判断真假 - 当value是bool还好,当value不是bool怎么办?
如: 1是真还是假,0是真还是假?
3.2.1 五个 falsy 值
falsy就是相当于 false 但又不是false 的值
分别是:undefined
、 null
、 0
、NaN
、 '' 空字符串
(两个空两个数字一个字符串)
注意:区分 空字符串 和 空格字符串
4 .undefined
和null
两种空类型
空空如也,只有JS有两个空
4.1 区别
- 没有什么本质的区别,undefined 多是一个默认的空,null是一个主动的空
- 如:一个变量声明了但没有赋值,那么默认值为 undefined
- 如:一个函数没有写return,那么默认 return undefined
- 习惯上: 把非对象(数字或布尔等)的空值写为undefined,把对象(person)的空值写为null
- 仅仅是个习惯
5.symbol 符号
不常用