原始值

JavaScript 中,原始值(原始数据类型)是一种既非对象也无方法属性的数据。有 7 种原始数据类型:

多数情况下,原始值直接代表了最底层的语言实现。

所有原始值都是不可变的,即它们的值不能被修改。重要的是不要将原始值本身与分配了原始值的变量混淆。变量可能会被重新赋予一个新值,但存在的值不能像数组、对象以及函数那样被修改。语言不提供改变原始值的工具方法。

基本类型没有方法,但仍然表现得像有方法一样。当在原始值上访问属性时,JavaScript 自动将值装入包装对象中,并访问该对象上的属性。例如,"foo".includes("f") 隐式创建了一个 String 包装对象,并在该对象上调用 String.prototype.includes()。这种自动装箱行为在 JavaScript 代码中是无法观察到的,但却是各种行为的一个很好的心理模型——例如,为什么“修改”原始值不起作用(因为 str.foo = 1 不是赋值给 str 本身的 foo 属性,而是赋值给了一个临时包装对象)。

参见