JS有八种数据类型
number, string, bool, symbol, bigint, undefined, null, object
数组、函数、日期不是数据类型,属于object
四种基本类型
Number
JS用64位浮点数存储Number, 大家都是浮点数,没有整数
Number里的特殊值
- NaN 是number
- 正0和负0, 正infinity, 负Infinity
-
- 1 / +0 == +infinity
- 1 / -0 == -infinity
Number精度
最多可以表示52+1=53个二进制数字,也就是15位整数
String
字符串的长度
- 字符串
\n\t\r的长度是3 - ''空字符串的长度是0
- ' '包含一个空格的字符串长度是1
在JS中,字符串会自动转换为字符串对象,所以字符串会有很多方法,比如split
Boolean 布尔值
JS有5个falsy值,即相当于false但是又不是false的值
null, undefined, NaN, '', 0
Undefined和Null的细微区别
-
如果一个变量声明了,但还没有赋值,它的值是undefined
-
如果一个函数没有写return, 默认return undefined
类型转换
Number => String
- String(number)
- number + ''
注意只能是加!不能是减去''
如图,加号有用,减号没用
String => Number
-
Number(s)
-
parseInt(s)
-
s-0
注意只能是-0!加0没用!加0会被认为是连接字符串
如图,字符串变数字时,减号有用,加号没用
x => bool
-
Boolean(x)
-
!!x
x=>String
-
String(x)
-
x.toString()
另外,还有两点和往常不一样的小知识:
&&短路逻辑
和以往我的想法不一样,&&的值并不是true或者false, 它取第一个假值或者最后一个表达式的值
-
1 && 2 的值是2
-
1&& 2 && 3 && 0 && 4 的值是0
||短路逻辑
同理,||取第一个真值 或者最后一个表达式的值
- 1||0||2||3 的值是1
- 0|| 0 || 5的值是5