JS的数据类型

221 阅读3分钟

JS数据类型有7种:四基两空一对象,分别为:数字 (number) 字符串(string)布尔(bool)符号(symbol) 空 (undefined)空(null)对象(object) bigint。 其中bigint是新增的,很新少有人用。

一 数字 number

数字的特殊值有:

0,正0,负0

无穷大infinity,正无穷大+infinity,负无穷大-infinity。

无法表达的数字--NAN ,但是输入NAN===NAN,会出现false。

数字的存储形式

JS中,数字使用64位浮点数的形式存储的。(二进制) 其中指数部分有11位,范围从-1023到+1024,有效数字有52位。需要省略开头的1.例如:0.5的存储方式是0|-1|0。

精度(有效数字)

最多只能是52+1个二进制位表示有效数字,对应的十进制是9后面15个0.

所以15位有效数字都能精确表示,16位有效数字如果小于等于90开头,也能精确表示。

二 字符string

1,写法

单引号'nihao'

双引号"nihao"

反引号``

引号不属于字符串的一部分。

2,转义

'表示'

"表示"

\n 表示换行

\r 表示回车

\t 表示tab制表符

\表示\

\uFFFF —— 对应的Unicode 字符

\xFF —— 前 256 个Unicode 字符

多行字符串:外面用反引号

3、字符串长度

string.length —— 即可看见字符串string的长度 例如:'\n\r\t'.length //值为3

通过下标可以读取字符(类似数组) 例如:let s='hello';s[0] //值为"h"

4、base64转码

  • window.btoa(字符串)—— 正常字符串转为Base64编码的字符串
  • window.atob(字符串) —— Base64编码的字符串转为原来的字符串

三、布尔bool (true/false)

经常用 if语句 配 bool —— if(value){...}else{...}

但是 value不是bool属性怎么办?

五个 falsy 值

  • undefined
  • null
  • 0
  • NaN
  • ''(空字符串)

这五个 falsy 值代表假的。(还有false)

四、undefined和null

undefined 和 null 是两种空类型,区别如下:

  • 声明变量但是没有赋值,默认值是undefined,不是null。
  • 函数没有return,那么默认return undefined,而不是 null。
  • 习惯上,非对象的空值写为undefined,把对象的空值写为 null。

五、symbol 符号

Symbol 生成一个全局唯一的值。具体可看MDN 或 阮一峰:ECMAScript 6入门

六、变量声明

三种声明方式:

var a=1
let a=1
const a=1
复制代码

let 是新的更合理的方式,可声明局部变量。const 声明是必须赋值,且不能再更改。

let 声明和const 声明

规则:

  • 遵循块作用域,使用范围不超出{}。
  • 不能重复声明
  • 可以赋值也可以不赋值
  • 必须先声明才能使用
  • 全局声明的let属性,不会变成window 的属性

const 声明与let声明几乎一样,但是必须要赋值

七、类型转换

1、number=> string

var n =1为例:

  • 方法一:String(n)
  • 方法二: n + ''(空字符串)

没有更改 n 的值,只是创造了新的值

2、stringr=> number

var s = '123'为例:

  • 方法一:Number(s)
  • 方法二:s-0
  • 方法三: +s
  • 方法四:parseInt(s) —— 变成整数

没有更改 s 的值,只是创造新的值。

3、x => bool

  • 方法一: Boolean(x)
  • 方法二: !!x

4、x => string

  • 方法1:String(x)

  • 方法2: x.toString()