原始值
在 JavaScript 中,**原始类型**(primitive value,primitive data type)是指非 对象 且没有 方法 或 属性 的数据。共有 7 种原始数据类型。
大多数情况下,原始值在语言实现的最低级别直接表示。
所有原始类型都是不可变的;也就是说,它们不能被修改。将原始类型本身与分配了原始值的变量混淆是很重要的。变量可以重新分配给一个新值,但是现有的值不能像对象、数组和函数那样被修改。该语言不提供修改原始值的方法。
原始类型没有方法,但仍然表现得好像有。当访问原始类型上的属性时,JavaScript 会将该值自动装箱成一个包装器对象,并在该对象上访问属性。例如,"foo".includes("f")
会隐式创建一个 String
包装器对象,并在该对象上调用 String.prototype.includes()
。这种自动装箱行为在 JavaScript 代码中是不可观察的,但它是理解各种行为的一个很好的心智模型——例如,为什么“修改”原始类型不起作用(因为 str.foo = 1
不是将值赋给 str
本身的 foo
属性,而是赋给一个短暂存在的包装器对象)。