原始值
不是对象也没有方法的数据
在 JavaScript 中,原始值是指不是对象也没有方法的数据。
primitive value,原始值,ECMAScript 规范里出现的频次较高 ~
data value
primitive data type,原始数据类型 ~ 原始类型,简称类型 ~
data type
primitive 原语。大约是原始值和原始类型的统称,具体看上下文
7个原始值
JavaScript 有 7 个原始值,分别对应 7 个原始类型。其中,除了 Undefined 和 Null 之外,其它数据类型都有一个等价的对象包装器,包装器的 valueOf()
方法会返回原始值。
Primitive Value
Primitive Type
Object
undefined
Undefined
-
null
Null
-
Boolean
Boolean
Boolean
String
String
String
Number
Number
Number
BigInt
BigInt
BigInt
Symbol
Symbol
Symbol
理解原始值
很多时候,在语言实现的最底层,原始值都是直接表示的。
不可变
所有的原始值都是不可变的——不能被改变。
Primitive values are immutable.
原始值 vs 变量
在动态语言里,值是有类型的,但是变量没有(类型)。
切记,不要混淆原始值本身和分配了原始值的变量。变量是可以被重新分配新值的,而已经存在的原始值是不能被修改的。如下:
原始值 vs 对象
对象、数组和函数的值之所以能被修改,是因为它们不是原始值。
如前所述“原始值是指不是对象也没有方法的数据”。举个例子感受下原始值和对象的不同,如下:
总结
这部分列出了 JavaScript 里的 7 个原始值,并着重介绍了原始值的不可变性、原始值和变量的区别,以及原始值和对象的区别。
主要参考
Last updated