JS数据类型 —— 一、简单类型

134 阅读4分钟

一共有七种:数字number、字符串string、布尔bool、符号symbol、空undifined、空null、对象object,先介绍前几种简单类型,object是复杂类型

一、数字number

数字由64位浮点数组成数字有整数(1)、小数(0.1)、科学计数法(1.23e4)、八进制(0123或00123或0o123)、十六进制(0X3F或0x3F)、二进制(0B11或0b11)

1、浮点数

浮动的点,小数点会乱动。
eg. 123.456 = 1.23456e10^(2) = 12345.6e10^(-2)

2、数字特殊值

  1. 正0和负0都等于0
  2. 无穷大有三种:Infinity、+Infinity、-Infinity
  3. 无法表示的数字:NaN(Not a Number);eg. 0除以0就是NaN
3、JS如何存数字

JS把数字转为二进制以后才能存储,十六进制共有(0-9A-F)十六个数字和字母

  1. 规则示意图:注有效数字最开头的1省略
    1.png

  2. 存储规则注意

    • 64位存储一个数字
    • 指数部分占11位(范围:-1023-1024)
    • 正负符号占一位
    • 有效数字占52位:开头的1省略
  3. 64位浮点数的范围:指数拉满,有效数字拉满可得到最大二进制数字:Number.MAX_VALUE;最小:Number.MIN_VALUE

  4. 64位浮点数的精度(有效数字):

    • 最多只能到52+1个二进制位表示有效数字
    • 2^53对应的十进制是9后面有15个0
    • 15位的有效数字可以被精确表示 ④ 16位精确数字如果小于90开头,可以被精确表示
    • 例如9110000000000001(12个0)就不能准确存储
  5. 十进制、二进制、八进制、十六进制之间的相互转

    • 十进制转二进制; eg.把32转为二进制:32=12^5 + 02^4 + 02^3 + 02^2 + 02^1 + 02^0 ===>100000 1.png
    • 十六进制转为二进制同理除以二取余 1.png
    • 二进制转为十六进制 QQ图片20230525161325.jpg

二、字符串string

在JS中,字符串用的是阉割版的UTF-8,每个字符两个字节

1、写法

  • '单引号'
  • “双引号”
  • ``反引号
  • 注意:引号不属于字符串的一部分,类似于书名号不是书名的一部分一样

2、如何在引号中加引号

  • 错误写法:it's ok ————>'it's ok'
  • 正确写法:不确定的时候用就反引号
    • 'it\'s ok' //转义
    • "it's ok"
    • it's ok//(用反引号包住内容)
  • 转义:用另一种写法表示想要的内容
    • \'————>'
    • \"————> "
    • \n————>换行
    • \r ————>回车
    • \t————>tab制表符
    • \\————>\
    • \uFFFF————>对应的Unicode字符
    • \xFF————>前256个Unicode字符
  • 多行字符串的表示:在字符串里用回车

3、字符串属性

  • 字符串长度
    • '123'.length // 长度为3
    • '\n\r\t'.length // 长度为3
    • ''.length // 长度为0,''是空字符串
    • '_'.length //长度为1,'_'里面是下划线
  • 通过下标读字符串
    • string[index] 举例: let s= 'hello'; s[4] //"o"
    • 注意:index是从0开始的s[0]是第一个字符
    • 注意index的长度:举例:let s = 'hello'; s[5]//undifined不会报错

4、JS如何存字符串

用0-127表示所有的符号:重点记忆:0用48号,A用65号,a用97号

5、base64编码

  • 一般用来隐藏招聘启事里的简历
  • window.btoa:正常字符串转为base64编码字符串
  • window.atob:base64编码转为原来的字符串
    举例:
    window.btoa('124') // 'MTI0'
    window.atob('MTI0') // '124'

三、注意数字和字符串的区别

1'1'

  1. 功能不同:数字可以进行加减乘除运算,字符串不可以
  2. 存储形式不同,在JS中数字是用64位浮点数的形式存储,字符串是用类似于UTF—8的形式存储

四、布尔bool

真或假(true或false)

1、下面几种运算可以得到bool值

  • 否定运算:!value
  • 相等运算:1==2 //false 、 1!=2//true 、 3===4 //false、 3!===4 //ture
  • 比较运算:1>2 //faslse 、 1>=2 // false 、1<2 //true 、1<=2 //true

2、布尔有五个falsy值:undifined、null、0、NaN、''

''是空字符串

3、 提问

  • 1是真么?// 是
  • 0是真假 ? //假
  • '0''1'是真假? //真(都是字符串,字符串'0'不是0)

五、nullundifined的区别:

  • 如果一个变量声明了但未赋值,默认为undifined
  • 如果一个函数没有写return,那默认的return为undifined
  • 一般习惯把非对象的空值写undifined,对象的空值写null

六、符号symbol

一般不用:参考MDN

七、变量声明

  1. var a = 1
  2. let a = 1
    • 遵循块作用域,即使用范围不能超过{}
      举例:{let a =1 ;console.log(a)} console.log(a)
    • 不能重复声明
    • 可赋值也可不赋值
    • 必须先声明再使用,否则报错
    • 全局声明的let变量不会变成window的属性
  3. const a = 1
    • 声明时必须已经赋值,且不能再更改的

八、类型转换

1、number ————>string
  • ''+n
  • String(n)
  • n+''

2、string————>number

  • Number(n)
  • s-0
  • +s
  • ParseInt('123')/Parse False('n')

3、x————>bool

  • Boolean(x)
  • !!x

4、x————>string

  • String(x)
  • x.toString()

5、注意

1.toString会报错,正确写法:1..toString(1).toString,具体可以搜索JavaScript 秘密花园 (shamansir.github.io)