JS数据类型

55 阅读2分钟

JS有八种数据类型

number, string, bool, symbol, bigint, undefined, null, object

数组、函数、日期不是数据类型,属于object

四种基本类型

Number

JS用64位浮点数存储Number, 大家都是浮点数,没有整数

Number里的特殊值

  1. NaN 是number
  1. 正0和负0, 正infinity, 负Infinity
    1. 1 / +0 == +infinity
    2. 1 / -0 == -infinity

Number精度

最多可以表示52+1=53个二进制数字,也就是15位整数

String

字符串的长度

  1. 字符串 \n\t\r 的长度是3
  2. ''空字符串的长度是0
  3. ' '包含一个空格的字符串长度是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