数字和字符串是最易于理解的值。除此之外,JS种还有几种值,这几种值本身比较简单,就放在一起说了。
布尔值(boolean)
布尔值听着比较奇怪,但是在现实生活种也会使用到。比如说我们在谈论八卦时,经常会说到,这事是真的还是假的?真和假就是布尔值。
布尔值通常会用于逻辑判断。如果这事是真的我就怎么怎么样,如果是假的就怎么怎么样。布尔值一共有两种值true和false,true表示真,false表示假。
let a = true
let b = false
空值(null)
空值用来表示没有,不存在。这种类型的值只有一个就是null。程序种凡是空的、没有的、不存在的都可以用null表示。
let a = null
未定义(undefined)
未定义和空值类似,也可以理解为空的,不存在的。这种类型的值也是只有一个undefined。undefined的意思和null很像,使用场景也几乎一致,如果说要区分的话,对于我们来讲要设置空的、不存在的都会使用null。而undefined都是由解析器自动设置的,像使用var声明但是没有赋值的变量、像是没有返回值的函数等都会返回undefined。你可能会觉得不好区分,可以这么记,开发时我们通常不会主动去设置undefined。
let a = undefined
// 一般不会这么写
基本数据类型(primitive)
上述我们所说的几种数据类型,包括数字(number和bigint)、字符串(string)、布尔值(boolean)、空值(null)、未定义(undeifined)。这些值在JS中被称为基本数据类型(还有一个symbol没讲)。
这几种数据是构成JS世界中一切数据的基石,JS中一切数据都是有这些内容构成的。这些数据都有一个共同的特点:“不可变”。基本数据类型在JS中都是不可变数据。
何为不可变数据?这些基本数据类型的值一旦创建就不可更高。简单来说,1永远都是1,不会变成2。’hello’(字符串)永远都是’hello’没法变成’abc’。true、false、null、undefined这些值也是同理,永远不能被改变。对于初学者来说,似乎不太好理解,但是不着急先记住结论。
说到这有些善于思考的同学就有疑问了,不对啊老师你说的不对,基本数据类型是可以改变的,比如这样:
let a = 10
a = 3
这样a的值不就改变了吗?怎么说是不能变呢?
这个问题会有很多同学想不明白,这就要求你必须要明确的区分出两个概念:变量和值(字面量)。这里a是变量而10是值,所以我说不可变指的是“值10”不可变。a = 3是在为变量进行重新赋值,是在改变变量而不是改变值。像我们之前说的变量相当于值的别名,let a = 10表示给10起了一个名字叫a,而a = 3表示,现在10不叫a了,3叫a。相当于修改了10的别名,对于10本身来说有影响吗?没有!