简单数据类型
- undefined,null, boolean, string, number, symbol
复杂数据类型
typeof 操作符
- typeof null 返回的事object
- typeof是操作符,不是函数
- 返回值,可以是:undefined,object,function,symbol,string,number,boolean
undefined 类型
- 只有一个值,就是undefined
- 声明一个变量没有初始化,它的值就是undefined
- 一般来说,不需要给某个值设置为undefined。undefined主要用于比较。
- es3之前,没有undefined。增加它的目的,就是为了区分null(空指针)和未初始化变量
- 是个假值,null也是个假值
- 对未声明的变量,只能有一个操作就是typeof,结果也是undefined
- 声明没有初始化的变量,typeof操作结果也是undefined
null类型
- 只有一个值,就是null
- 表示空对象指针
- typeof(null)的返回值是object
- 定义对象变量时,建议使用null来初始化
- null==undefined true
boolean类型
- 两个值:true false
- 区分大小写的,True和False是有效的标识符,不是布尔值
![image]()
number类型
- 表示整数和浮点数
- 八进制,0开头
- 十六进制,0x
- 存储浮点值的存储空间是整数的两倍,es总是想办法把小数转换为整数,比如小数点后面是0
- 使用IEEE754规范存储数据(无论什么语言),就会有精度问题,尤其是小数计算
- 值有范围,超过了就是infinity 和-infinity
- isFinite()函数,可以判断一个数是否是有限大
NaN
- NaN,不是数值
- 在其他语言中,0除任何数值,都会报错。
- 在js中,0,+0,-0 互相除,会得到NaN
- 在js中,0除任何一个非0,会得到infinity 或者-infinity
- 任何涉及NaN的操作,都会返回NaN
- NaN不等于任何值,包括NaN
- isNaN函数,任何不能转换为数值的,都会返回true
数值转换
- Number() 可以用于任何类型
- parseInt()和parseFloat()可以用于字符串类型
Number()
- true为1,false为0
- null为0
- undefined为NaN
- 字符串包含数字(前如果有+-也包含在内),返回数字
- 字符串包含0x开头的十六进制,返回对应的十进制
- 空字符串,返回0
- 非以上情况,返回NaN
parseInt
- 从第一个非空字符开始转换
- 第一个非空字符不是正负号和数字,就会返回NaN
- 空字符串,返回NaN
- 能够识别八进制和十六进制
- 第二个参数,是确定几进制
- 不传第二个参数,就由parseInt自己决定。为了避免出错,建议传参数
parseFloat
- 只解析十进制,不能穿第二个参数
- 永远忽略第一个0
- 十六进制数,永远返回0
- 没有小数点或者小数点后面是0,就会返回整数
string类型
- 可以使用双引号,单引号,反引号
- 字符字面量,是被当作当个字符解释的
![image]()
![image]()
- 字符串是不可改变的,一旦创建,值就不能变了
- 要修改值,就必须销毁原来的字符串,创建新的字符串
toString方法
- 数值,布尔值,对象,字符串 都有这个方法
- 字符串会返回一个自身副本
- null和undefined 没有这个方法
- 数值调用这个方法,可以传一个参数,得到的数值是几进制的。默认是10
String方法
- 如果不确定值是否是null或者undefined,可以使用这个方法
- 如果值有toString方法,调用toString方法
- 如果是null,返回null
- 如果是undefined,返回undefined
- 加号操作符给一个值加上一个“”,会将其转换为字符串
模板字面量
- 可以保留缩进和换行
- 尤其在定义html模板时特别有用
- 技术上讲,不是字符串,是一种特殊的js表达式,求值后得到的是字符串
- 在定义时,立即求值并转换为字符串,插入的变量从最近的作用域取值
- 通过${}实现js表达式,可以是调用函数和方法
- 所有插入的值,都会使用toString强制转型为字符串
- 嵌套的模板字符串,不需要转义
模板字面量标签函数
- 接收的参数是原始字符串数组,和对每个表达式求值的结果
原始字符串
- 获得模板字符串原始内容
![image]()
symbol
- 是原始数据类型
- typeof返回的是symbol
- 唯一的,不可变的
- 可以用作对象属性,这样就能保证不会覆盖任何已有的对象属性
- 没有字面量语法,只能使用Symbol函数创建
- symbol函数不能和new关键字一起作为构造函数使用
全局符号注册表
- 需要重用符号,可以使用symbol.for()
- 调用symbol.for(),会检查全局运行时的注册表,如果不存在就会创建新的添加到注册表中,如果存在,就会返回该符号
使用符号作为属性
- 使用字符串和数值作为属性的,都可以使用符号
- getOwnPropertyNames() 返回常规属性数组
- getOwnPropertySymbols()返回符号属性数组
- getOwnPropertyDescriptors()返回常规属性和符号属性
- Reflect.ownKeys()返回两种类型的键值
posted on
2022-05-10 07:49
社会优先于个人
阅读(
51)
评论()
收藏
举报