JS中最初有:Undefined
,Null
,Boolean
,Number
,String
和Object
六种数据类型,后来在es6规范中又添加了Symbol
类型,所有目前有其中数据类型,这七种类型又可以分为四类:
- 基本类型:
Undefined
,Null
,Boolean
,Number
- 引用类型:
Object
- 特殊类型:
String
- 特殊类型:
Symbol
这几种类型有什么区别
基本类型在内存中拥有固定的大小,比如Number
的大小统一为8个字节的浮点数,整数部分的精确范围是正负2的53次方,超过这个范围的,js将无法精确的表示,这也导致js不太适合科学和金融方面的计算。
引用类型的大小不定,并且引用类型的值是可以变的(你可以为对象添加/修改属性等)。
String
之所以特殊,是因为它的长度不固定(可以构建任意长度的字符串),但是,又无法修改字符串的值
let str1 = 'hello'
// 这里实际上是构建了一个新的字符串'hello world', 而不是修改了'hello'
str1 = 'hello world'
所以String
可以说是与基本类型相似的不可变的引用类型。
Symbol
的实例不是对象:
const s = Symbol()
typeof s // 打印出symbol,说明不是对象
Symbol
是一种类似于字符串的数据结构,用于表示独一无二的值。
网友评论