JavaScript 中的数据类型,说白了就是下图中 “值” 的类型。在 JavaScript 中,数据类型可以分为以下 2 大类:
- 基本类型:只会包含一个值。基本类型有 7 种,包括数字、字符串、布尔值、undefined、null、BigInt、Symbol。
- 引用类型:可以包含多个值。引用类型只有 1 种,也就是对象。其中,数组本质上也是一个对象。

在这一节中,我们先来介绍一下基本类型。然后在后面章节,再去详细介绍引用类型。
JavaScript 数字类型
在 JavaScript 中,数字是最基本的数据类型。所谓的 “数字” ,就是我们数学意义上的数字,比如 10、-10、3.14 等。
注意: JavaScript 中的数字是不区分 “整型(int)” 和 “浮点型(float)” 的,所有变量或常量都是使用 let 或 const 来定义。
示例 1:使用数字类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const n = 1001;
console.log(n);
</script>
</body>
</html>运行结果如下。
1001JavaScript 字符串类型
字符串,从名字上来就很好理解,就是一串字符嘛。在 JavaScript 中,字符串都是用英文单引号或英文双引号(注意都是英文)括起来的。
单引号括起来的一个或多个字符,比如:
'我'
'绿叶网'双引号括起来的一个或多个字符,比如:
"我"
"绿叶网"单引号括起来的字符串中可以包含双引号,比如:
'我来自"绿叶网"'双引号括起来的字符串中可以包含单引号,比如:
"我来自'绿叶网'"示例 2:使用字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const str = "lvyenet";
console.log(str);
</script>
</body>
</html>运行结果如下。
lvyenet分析:
如果我们把字符串两边的引号去掉后,会发现控制台不输出内容了,小伙伴们可以自己试一试。因此对于一个字符串来说,一定要加上引号,单引号或双引号都可以。
const str = "lvyenet";
console.log(str);对于上面这两句代码,也可以直接用下面一句代码来实现,因为 console.log() 这个方法本身就是用来输出一个字符串的。
console.log("lvyenet");示例 3:内部包含引号的字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const str = '"lvye"net';
console.log(str);
</script>
</body>
</html>运行结果如下。
"lvye"net分析:
单引号括起来的字符串中,不能含有单引号,只能含有双引号。同样的道理,双引号括起来的字符串中,也不能含有双引号,只能含有单引号。
为什么要这么规定呢?我们看看下面这句代码就知道了。字符串中含有 4 个双引号,此时 JavaScript 是无法正确判断哪两个双引号是一对的。
""lvye"net"示例 4:内容是数字的字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const n = "1001";
console.log(n);
</script>
</body>
</html>运行结果如下。
1001分析:
如果数字加上双引号,此时 JavaScript 会把这个数字当做 “字符串” 来处理,而不是当做 “数字” 来处理。
我们都知道,数字是可以进行加减乘除的,但加上双引号的数字一般是不可以进行加减乘除的,因为这个时候它不再是数字,而是被当成字符串了。
const n = 1001 // n 是一个数字
const n = "1001" // n 是一个字符串JavaScript 布尔值类型
在 JavaScript 中,数字和字符串这两个类型的值可以有无数多个,但是布尔类型的值只有 2 个:true 和 false。true 表示 “真”,false 表示 “假”。
有些小伙伴可能觉得很奇怪,为什么这种数据类型叫 “布尔值” 呢?这名字是咋来的呢?实际上,布尔是 “bool” 的音译,它是以英国数学家、布尔代数的奠基人乔治·布尔(George Boole)来命名的。
布尔值最大的用途就是:选择结构的条件判断。对于选择结构,我们在后面的 “JavaScript if 语句” 一节中会详细给大家介绍,这里只需要简单了解一下就行。
示例 5:使用布尔值类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const a = 10;
const b = 20;
if (a < b) {
console.log("a 小于 b");
}
</script>
</body>
</html>运行结果如下。
a 小于 b分析:
在这个例子中,我们首先定义了两个数字类型的变量:a、b。然后在 if 语句中对 a 和 b 进行大小判断,如果 a 小于 b,此时返回 true,则使用 console.log() 方法输出一个字符串:" a 小于 b"。
JavaScript undefined 类型
在 JavaScript 中,如果一个变量虽然已经用 let 来声明了,但如果没有对这个变量进行赋值,那么此时该变量的值就是 undefined。其中,undefined 也叫做 “未定义值” 。
示例 6:使用 undefined 类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
let n;
console.log(n);
</script>
</body>
</html>运行结果如下。
undefined分析:
在 JavaScript 中,凡是已经用 let 来声明但没有赋值的变量,其值都是 undefined。
JavaScript null 类型
数字、字符串等数据在定义的时候,系统都会分配一定的内存空间。在 JavaScript 中,空值用 null 表示。如果一个变量的值等于 null,如 “let n = null”,则表示系统没有给这个变量 n 分配内存空间。
对于内存分配这个概念,非计算机专业的小伙伴可能理解起来比较困难,不过没关系,我们只需要简单认识一下就可以了。
经过这一节的学习,我们也清楚地知道 “数据类型” 是怎样一个东西了。数据类型,就是值的类型。就像我们数学,也得分整数、小数、分数这样的类型。
常见问题
1. 这一节讲了那么多数据类型,如果我想要知道一个变量是什么类型,该怎么做呢?
我们可以使用 typeof 关键字来判断变量的类型,比如:
console.log(typeof 666); // "number"
console.log(typeof "lvyenet"); // "string"