Skip to content

5. 数据类型(数据的分类)

数据类型是 JavaScript 中对数据的分类,不同的数据类型具有不同的特点和用途。本章节将带你学习 JavaScript 的基本数据类型、数据类型检测和数据类型转换。

5.1 基本数据类型(5 大核心)

JavaScript 有以下 5 种基本数据类型:

数字类型(Number)

数字类型用于表示数值,包括整数和小数。

javascript
// 整数
let age = 25;
let count = 100;

// 小数
let price = 9.99;
let pi = 3.14159;

// 特殊值
let infinity = Infinity;  // 无穷大
let negativeInfinity = -Infinity;  // 负无穷大
let notANumber = NaN;  // 非数字

字符串类型(String)

字符串类型用于表示文本,用单引号、双引号或反引号包围。

javascript
// 单引号
let name = 'John';

// 双引号
let message = "Hello, World!";

// 反引号(模板字符串)
let greeting = `Hello, ${name}!`;

// 空字符串
let emptyString = '';

// 包含特殊字符的字符串
let specialString = 'It\'s a beautiful day!';

布尔类型(Boolean)

布尔类型用于表示真或假,只有两个值:truefalse

javascript
// 布尔值
let isActive = true;
let isStudent = false;

// 布尔表达式
let isAdult = age >= 18;
let isEmpty = array.length === 0;

空值(Null)

null 表示一个空值或不存在的对象。

javascript
let user = null;  // 表示用户不存在
let result = null;  // 表示结果为空

未定义(Undefined)

undefined 表示变量已声明但未赋值。

javascript
let name;  // 未赋值,值为 undefined
let age = undefined;  // 显式赋值为 undefined

5.2 数据类型检测:typeof 运算符

typeof 运算符用于检测变量的数据类型,返回一个字符串。

基本用法

javascript
console.log(typeof 42);  // "number"
console.log(typeof "Hello");  // "string"
console.log(typeof true);  // "boolean"
console.log(typeof null);  // "object"(历史遗留问题)
console.log(typeof undefined);  // "undefined"
console.log(typeof []);  // "object"
console.log(typeof {});  // "object"
console.log(typeof function() {});  // "function"

注意事项

  • typeof null 返回 "object",这是 JavaScript 的一个历史遗留问题
  • typeof []typeof {} 都返回 "object",无法区分数组和对象
  • typeof function() {} 返回 "function",这是一个特殊情况

检测 null

由于 typeof null 返回 "object",我们需要使用其他方法检测 null:

javascript
let value = null;
console.log(value === null);  // true

检测数组

可以使用 Array.isArray() 检测数组:

javascript
let arr = [];
console.log(Array.isArray(arr));  // true

let obj = {};
console.log(Array.isArray(obj));  // false

5.3 数据类型转换(字符串转数字 / 数字转字符串)

JavaScript 是一种动态类型语言,会根据上下文自动进行类型转换,也可以手动进行类型转换。

字符串转数字

1. 使用 Number() 函数

javascript
let str = "123";
let num = Number(str);
console.log(num);  // 123
console.log(typeof num);  // "number"

// 转换失败会返回 NaN
let invalidStr = "abc";
let invalidNum = Number(invalidStr);
console.log(invalidNum);  // NaN

2. 使用 parseInt() 函数

javascript
let str = "123abc";
let num = parseInt(str);
console.log(num);  // 123(只转换开头的数字部分)

let hexStr = "0xFF";
let hexNum = parseInt(hexStr, 16);  // 第二个参数表示进制
console.log(hexNum);  // 255

3. 使用 parseFloat() 函数

javascript
let str = "123.45abc";
let num = parseFloat(str);
console.log(num);  // 123.45(只转换开头的数字部分)

4. 使用一元加号运算符

javascript
let str = "123";
let num = +str;
console.log(num);  // 123

数字转字符串

1. 使用 String() 函数

javascript
let num = 123;
let str = String(num);
console.log(str);  // "123"
console.log(typeof str);  // "string"

2. 使用 toString() 方法

javascript
let num = 123;
let str = num.toString();
console.log(str);  // "123"

// 转换为不同进制
let binaryStr = num.toString(2);  // 二进制
console.log(binaryStr);  // "1111011"

let hexStr = num.toString(16);  // 十六进制
console.log(hexStr);  // "7b"

3. 使用模板字符串

javascript
let num = 123;
let str = `${num}`;
console.log(str);  // "123"

4. 使用加号运算符

javascript
let num = 123;
let str = num + "";
console.log(str);  // "123"

其他类型转换

布尔值转其他类型

javascript
// 布尔值转数字
true + 0;  // 1
false + 0;  // 0

// 布尔值转字符串
String(true);  // "true"
String(false);  // "false"

空值和未定义转其他类型

javascript
// null 转数字
Number(null);  // 0

// undefined 转数字
Number(undefined);  // NaN

// null 转字符串
String(null);  // "null"

// undefined 转字符串
String(undefined);  // "undefined"

5.4 新手避坑:常见类型错误

1. 字符串与数字的相加

javascript
// 字符串与数字相加,结果是字符串
let result = "5" + 5;
console.log(result);  // "55"
console.log(typeof result);  // "string"

// 数字与数字相加,结果是数字
let result2 = 5 + 5;
console.log(result2);  // 10
console.log(typeof result2);  // "number"

2. 字符串与数字的比较

javascript
// 字符串与数字比较,会将字符串转换为数字
console.log("10" > 5);  // true
console.log("5" == 5);  // true
console.log("5" === 5);  // false(严格比较,类型不同)

3. null 与 undefined 的区别

javascript
console.log(null == undefined);  // true(宽松比较)
console.log(null === undefined);  // false(严格比较)
console.log(typeof null);  // "object"
console.log(typeof undefined);  // "undefined"

4. NaN 的特殊性

javascript
console.log(NaN === NaN);  // false(NaN 不等于自身)
console.log(isNaN(NaN));  // true
console.log(isNaN("abc"));  // true("abc" 转换为数字是 NaN)
console.log(Number.isNaN(NaN));  // true
console.log(Number.isNaN("abc"));  // false(只检查是否为 NaN)

小结

通过本章节的学习,你已经掌握了:

  • JavaScript 的 5 种基本数据类型:数字、字符串、布尔值、null 和 undefined
  • 使用 typeof 运算符检测数据类型
  • 字符串与数字之间的相互转换
  • 常见的类型错误及避免方法

在后续的章节中,我们将学习 JavaScript 的运算符、条件语句、循环和函数等核心语法。

© 2026 编程马·菜鸟教程 版权所有