Appearance
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)
布尔类型用于表示真或假,只有两个值:true 和 false。
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; // 显式赋值为 undefined5.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)); // false5.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); // NaN2. 使用 parseInt() 函数
javascript
let str = "123abc";
let num = parseInt(str);
console.log(num); // 123(只转换开头的数字部分)
let hexStr = "0xFF";
let hexNum = parseInt(hexStr, 16); // 第二个参数表示进制
console.log(hexNum); // 2553. 使用 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 的运算符、条件语句、循环和函数等核心语法。
