08-基本类型和对象
3.5 基本类型和对象
在JavaScript中,只有基本类型和对象这两种值。基本类型(比如,字符串和数字)的值是不可变的。数字5始终是数字5;字符串 "alpha"
也始终是 "alpha"
。数字不可变很好理解,但是很多人容易在字符串上犯错。比如,将多个字符串连接在一起( "alpha"
+ "omega"
)后,以为只是在原来的字符串上做了修改。其实不然,连接后会生成一个新的字符串,就好比6和5不是同一个数字。后续会深入了解以下6种基本类型:
- 数字。
- 字符串。
- 布尔。
- null。
- undefined。
- 符号。
注意,不可变不是指变量的内容不可变,来看个例子:
let str = "hello";
str = "world";
第一个变量str初始化了一个不可变的值 "hello"
,紧接着它被指定了一个新的值 "world"
(不可变)。这里关键点在于 "hello"
和 "world"
是不同的字符串,只是变量str所存储的值改变了。虽然很多时候,这种区别只是理论上的,但在第6章学习函数的时候这些知识就变得有用了。
除了上述的6种基本类型,剩下的都是对象。与基本类型不太一样的是,对象的形式和值非常多样化,犹如变色龙一般。
由于对象的灵活性,它可以用来构造自定义的数据类型。实际上,JavaScript提供了一些内置的对象类型。这里将讨论以下几种内置对象:
- Array。
- Date。
- RegExp。
- Map和WeakMap。
- Set和WeakSet。
最后,基本类型的数字、字符串、布尔型都有对应的对象类型, Number
、 String
、 Boolean
。这些对象不会真的存储一个值(基本类型则会存储值),它们只是具备关联到对应基本类型的功能。后面会结合这些对象类型对应的基本类型来学习它们。