---
title: "IT课程 JavaScript基础 038_数据类型"
date: 2024-08-22T09:25:00.000Z
tags: ["IT课程", "HTML课程", "CSS课程", "JavaScript课程", "Java课程", "计算机系统与网络", "JavaScript数据类型", "JavaScript Number", "JavaScript BigInt", "JavaScript String", "JavaScript Boolean", "JavaScript Undefined", "JavaScript Null", "JavaScript Symbol"]
categories: ["学习", "JavaScript基础"]
canonical: https://www.zhaojian.net/it-course-javascript-038/
author: 赵健
---

在JavaScript中，数据类型用于表示不同种类的数据，例如数字、字符串、布尔值等。
JavaScript中的数据类型分为两大类：原始数据类型和对象数据类型。

### 原始数据类型

原始数据类型的值只包含一个单独的内容（字符串、数字或者其他）。

##### Number（数字）

用于表示数字，包括整数和浮点数。例如：5、3.14、-10。
数字可以有很多操作，比如，乘法 `*`、除法 `/`、加法 `+`、减法 `-` 等等。
除了常规的数字，还包括所谓的“特殊数值”也属于这种类型：`Infinity`、`-Infinity` 和 `NaN`。
`Number` 类型是浮点数类型，在进行精确计算时可能会存在精度问题，如：`0.1 + 0.2`。
可以通过 `parseInt()` 方法将字符串转换为整数，通过 `parseFloat()` 方法将字符串转换为浮点数。

示例：

```js
let age = 25;
```

```js
console.log(0.1 + 0.2);  // 输出 0.30000000000000004
```

```js
let result = 0.1 * 10 + 0.2 * 10;
result = result / 10;  // 将结果转换回浮点数
console.log(result);  // 输出 0.3
```

##### BigInt（大整型）

表示任意精度整数的数据类型（针对内存大小限制）。它允许你表示比 `Number` 类型更大范围的整数值，而不会丢失精度。使用 `n` 后缀或者调用 `BigInt()` 构造函数来创建 `BigInt`。
处理超出 `Number` 范围的整数值，不能与普通整数混合使用，不能通过 `parseInt()` 或 `parseFloat()` 转换。

示例：

```js
let bigIntLiteral = 123n;
let bigIntObject = BigInt(456);
```

##### String（字符串）

用于表示文本数据，字符串是由一系列字符组成的，可以包含字母、数字、符号等，例如："Hello, World!"、"你好"、'123'。
字符串必须被括在引号里，包括：单引号 `'Hello'`、双引号 `"Hello"`、反单引号 `` `Hello` ``。单引号和双引号都是“简单”引用，反单引号是具备功能扩展的引号，可以通过将 `${…}` 方式直接引用变量，保存文本格式。
换行符 `\n`、制表符 `\t`、反斜杠自身 `\\`、单引号 `\'` 和双引号 `\"`、回车符 `\r`

示例：

```js
let text = "Hello, World!";
```

##### Boolean（布尔值）

用于表示逻辑值，只有两个可能的值：true 或 false。

示例：

```js
let isStudent = true;
```

##### Undefined（未定义）

用于表示未初始化、未定义、未被赋值的变量或没有参数值的函数。

示例：

```js
let undefinedVar;
alert(undefinedVar);
```

##### Null（空值）

用于表示“无”、“空”或“值未知”的特殊值或不存在的对象值。

示例：

```js
let nullValue = null;
```

##### Symbol（符号）

用于创建唯一的、不可变的标识符。常用于定义对象的私有属性、创建唯一的常量或者作为特殊行为的标识符。每个通过Symbol创建的符号都是唯一的，即使它们具有相同的描述也是不同的。

示例：

```js
const symbol1 = Symbol();
const symbol2 = Symbol();
console.log(symbol1 === symbol2); // 输出 false，每个Symbol都是唯一的
```

***

### 对象数据类型

可用于储存数据集合或更复杂的内容。

##### Object（对象）

用于存储键值对，或者说属性与属性值的映射关系。
对象可以包含各种数据类型的值，包括数字、字符串、布尔值、数组、其他对象等。

示例：

```js
let person = {
	name: "Alice",
	age: 30,
	isStudent: false
};
```

##### Array（数组）

数组是一种有序的、可变的数据结构，用于存储一组值。数组可以包含不同数据类型的元素，且每个元素都有一个对应的索引。

示例：

```js
let numbers = [1, 2, 3, 4, 5];
```

##### Function（函数）

函数是一种可重复使用的代码块，它可以接受输入参数、执行等一系列操作，并返回结果。函数是JavaScript中的一等公民，它可以被赋值给变量、作为参数传递给其他函数，也可以作为其他函数的返回值。

示例：

```js
function greet(name) {
	console.log("Hello, " + name + "!");
}
greet("JavaScript"); 
```


***

### `typeof`

`typeof` 是一个在JavaScript中用于获取给定变量的类型的运算符（所以不需要在`typeof`中加括号）。它返回一个表示变量类型的字符串。

示例：

```js
let undefinedVariable;
let booleanVariable = true;
let numberVariable = 42;
let stringVariable = "Hello";
let objectVariable = { key: "value" };
let functionVariable = function() {};
let symbolVariable = Symbol("mySymbol");
let nullVariable = null;

console.log(typeof undefinedVariable);  // 输出 "undefined"
console.log(typeof booleanVariable);    // 输出 "boolean"
console.log(typeof numberVariable);     // 输出 "number"
console.log(typeof stringVariable);     // 输出 "string"
console.log(typeof objectVariable);     // 输出 "object"
console.log(typeof functionVariable);   // 输出 "function"
console.log(typeof symbolVariable);     // 输出 "symbol"
console.log(typeof nullVariable);     // 输出 "object"
```

使用 `typeof x, x` 会分别返回变量类型及变量值。首先执行 `typeof x`，然后执行 `x`，并输出两个值。

示例：

```js
let x = 42;
console.log(typeof x, x);
```

- `typeof x` 返回 "number"，表示变量 `x` 的类型是数字。
- `x` 返回变量 `x` 的值，即 `42`。