JavaScript中的基本数据类型
JavaScript 中的数据类型可以分为两大类:基本数据类型(原始数据类型)和引用数据类型(对象类型)。本文将重点介绍基本数据类型。
一、基本数据类型概述
最新的 ECMAScript 标准定义了 7 种基本数据类型:
| 数据类型 | 描述 | 示例 |
|---|---|---|
| Number | 数字类型,包括整数和浮点数 | let age = 25; let price = 99.99; |
| String | 字符串类型,表示文本数据 | let name = "张三"; |
| Boolean | 布尔类型,只有两个值:true 或 false | let isActive = true; |
| Undefined | 未定义类型,表示变量声明但未赋值 | let value; // value 为 undefined |
| Null | 空值类型,表示空值或未知值 | let empty = null; |
| Symbol | 符号类型 (ES6),表示唯一标识符 | let sym = Symbol('id'); |
| BigInt | 大整数类型 (ES2020),表示任意大的整数 | let bigNum = 12345678901234567890n; |
二、各数据类型详解
1. Number(数字类型)
javascript
let integer = 42; // 整数
let float = 3.14; // 浮点数
let negative = -10; // 负数
let scientific = 1.5e3; // 科学计数法,表示 15002. String(字符串类型)
javascript
let singleQuote = 'Hello';
let doubleQuote = "World";
let backtick = Hello, ${doubleQuote}!; // 模板字符串,输出 "Hello, World!"
// 字符串操作
let str = "JavaScript";
console.log(str.length); // 获取长度:10
console.log(str[0]); // 访问字符:"J"
console.log(str.toUpperCase()); // 转换为大写:"JAVASCRIPT"3. Boolean(布尔类型)
- 只有两个值:
true(真)和false(假)1,2 - 常用于条件判断和逻辑运算8
- 在布尔上下文中,以下值会被视为
false(假值):false0和0.0""(空字符串)nullundefinedNaN
javascriptlet isTrue = true; let isFalse = false; let isGreater = 5 > 3; // true // 布尔转换 console.log(Boolean(0)); // false console.log(Boolean("Hello")); // true console.log(Boolean("")); // false
4. Undefined(未定义类型)
javascript
let undefinedVar;
console.log(undefinedVar); // undefined
function test() {
// 没有返回值
}
console.log(test()); // undefined5. Null(空值类型)
javascript
let emptyValue = null;
console.log(emptyValue); // null
console.log(typeof null); // "object"(历史遗留问题)
// 通常用于初始化变量,表示暂无有效值
let data = null;6. Symbol(符号类型)
javascript
let sym1 = Symbol('id');
let sym2 = Symbol('id');
console.log(sym1 === sym2); // false,即使描述相同也是不同的 Symbol
// 作为对象属性键
let user = {
name: "张三",
[sym1]: 12345 // 唯一属性
};7. BigInt(大整数类型)
javascript
let bigInt = 1234567890123456789012345678901234567890n;
let alsoBigInt = BigInt("9007199254740991");
console.log(bigInt + 1n); // 大整数运算
// 不能与普通 Number 混合运算
let regularNumber = 100;
// console.log(bigInt + regularNumber); // 报错
console.log(bigInt + BigInt(regularNumber)); // 正确用法三、数据类型检测
1. typeof 运算符
- 返回一个字符串,表示未经计算的操作数的类型2,4
javascript
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof Symbol("id")); // "symbol"
console.log(typeof 123n); // "bigint"
console.log(typeof null); // "object"(历史遗留问题)
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function () {
}); // "function"2. 其他检测方法
javascript
// 检测数组
console.log(Array.isArray([])); // true
console.log([] instanceof Array); // true
// 检测 null
let value = null;
console.log(value === null); // true
// 通用类型检测(推荐)
function getType(value) {
return Object.prototype.toString.call(value).slice(8, -1);
}
console.log(getType(42)); // "Number"
console.log(getType("Hello")); // "String"
console.log(getType(true)); // "Boolean"
console.log(getType(null)); // "Null"
console.log(getType(undefined)); // "Undefined"
console.log(getType(Symbol("id"))); // "Symbol"
console.log(getType(123n)); // "BigInt"
console.log(getType([])); // "Array"
console.log(getType({})); // "Object"四、基本数据类型的特点
javascript
// 值传递示例
let a = 10;
let b = a; // b 是 a 的副本
a = 20;
console.log(a); // 20
console.log(b); // 10(b 的值不受 a 影响)
// 与引用类型的对比
let obj1 = {value: 10};
let obj2 = obj1; // obj2 和 obj1 引用同一个对象
obj1.value = 20;
console.log(obj2.value); // 20(obj2 的值随 obj1 变化)五、类型转换
1. 显式类型转换
javascript
// 转换为数字
console.log(Number("123")); // 123
console.log(parseInt("123")); // 123
console.log(parseFloat("3.14")); // 3.14
// 转换为字符串
console.log(String(123)); // "123"
console.log((123).toString()); // "123"
// 转换为布尔值
console.log(Boolean(0)); // false
console.log(Boolean(1)); // true
console.log(Boolean("")); // false
console.log(Boolean("Hello")); // true2. 隐式类型转换
javascript
// 字符串拼接
console.log("5" + 1); // "51"(数字被转换为字符串)
console.log("5" - 1); // 4(字符串被转换为数字)
// 布尔上下文
if (0) {
console.log("这行不会执行"); // 0 被转换为 false
}
if ("Hello") {
console.log("这行会执行"); // 非空字符串被转换为 true
}六、总结
JavaScript 的基本数据类型是构建复杂程序的基石。理解每种类型的特点、使用场景以及类型转换规则,对于编写健壮、高效的 JavaScript 代码至关重要。在实际开发中,建议使用严格相等运算符(===)进行类型和值的比较,避免隐式类型转换带来的意外结果8。
掌握这些基本数据类型后,你将能够更好地理解 JavaScript 的运行机制,为学习更复杂的引用数据类型(如 Object、Array、Function 等)打下坚实基础。 注:本文基于 ECMAScript 最新标准,内容适用于现代 JavaScript 开发环境。在实际编程中,请确保你的运行环境支持 ES6 及更高版本特性。
