JS的数据类型
- 七种
- 数字(number)
- 字符串(string)
- 布尔(bool)
- 符号(symbol)
- undefined(空的)
- null(空的)
- object(对象): 数组,函数,日期不属于数据类型,属于对象
number(数字)
- 正0和负0
- 无穷大:Infinity,+Infinity,-Infinity。
- 无法表示的数字:NaN(但是他是一个数字)
数字的储存形式:64位浮点数
- 64位存一个number
- 符号占一位(0表示正数,1表示负数)
- 指数占11位(-1023~1024)
- 有效数字占52位(开头的1省略)
- (+-) 1.01100110 * 2^8
范围(忽略符号位)
- 指数拉满,有效数字拉满,得到最大二进制数
- Number.MAX-VALUE:1.7976931348623157e+308
- Number.MIN-VALUE:5e-325
精度
- 最多只能存52+1个二进制位有效数字
- 2^53对应的十进制是9后面的15个0
- 所以15为有效数字都能精确表示
- 16位有效数字小于90开头也能精确表示
字符串(string)
- 写法:引号不属于字符的一部分。
- 单引号('')
- 双引号("")
- 反引号(``)
引号里加引号使用转义:
- 'it's ok'
- "it's ok" 3.反引号(多字符串想加回车用反引号)
转义
- '表示'
- "表示"
- \n表示换行
- \t表示table制作
- \表示\
- \UFFFF表示对应的Unicode字符
- \XFF表示前256个Unicode字符
属性
-
字符串的长度
- '123'.lenght
-
通过下标读取字符
-
string【index】
-
let s ='hello'
-
s[0] //'h'
-
index从0开始
base64转码
- window.btoa
- window.atob
布尔(boolean) 真或假
- falsy是相当于false但又不是false的值
- undifined
- null
- 0
- NaN
- ''
除了以上五个都是真值
变量声明
- 三种声明方式
- var(过时,不好用的)
- let
- const(声明时必须赋值且不可更改)
let声明
- 规则
- 遵循块作用域
- 不能重复声明
- 可以赋值,也可以不赋值
- 必须先声明在使用
- 全局声明的let变量,不会变成window的属性
const声明
- 规则
- let基本一样
- 声明时就要赋值且不可更改
name和'name'的区别:name是变量,'name'是常量
类型转换
-
number => string(var a = 1)
- String(a)
- a+''
-
string => number(var a = '12')
- Number(a)
- parseInt(a)|parseFloat(a)
- a-0
-
x => bool
-
Boolen(x)
-
!!x
-