JavaScript 数据类型详解 - 来自 javascript-tutorial 项目的核心知识
数据类型概述
在 JavaScript 中,每个值都属于特定的数据类型。JavaScript 是一种动态类型语言,这意味着变量可以随时持有任何类型的值,而不需要在声明时指定其类型。这与静态类型语言(如 Java 或 C++)形成鲜明对比。
JavaScript 的八种基本数据类型
JavaScript 共有八种基本数据类型,可分为两大类:
原始类型(Primitive Types)
- Number - 用于整数和浮点数
- BigInt - 用于任意长度的整数
- String - 用于文本数据
- Boolean - 用于逻辑值 true/false
- Null - 表示"无"、"空"或"值未知"的特殊值
- Undefined - 表示"未赋值"的变量
- Symbol - 用于创建唯一的标识符
非原始类型(Non-Primitive Type)
- Object - 用于更复杂的数据结构
数字类型(Number)
JavaScript 中的数字类型既包含整数也包含浮点数:
let integer = 100; // 整数
let float = 3.14159; // 浮点数
特殊数值
数字类型包含几个特殊值:
Infinity
和-Infinity
:表示数学上的无穷大NaN
(Not a Number):表示计算错误
console.log(1 / 0); // Infinity
console.log("abc" / 2); // NaN
console.log(NaN + 1); // NaN(具有"传染性")
JavaScript 的数学运算非常安全,永远不会导致致命错误,最坏情况下只会得到 NaN。
大整数类型(BigInt)
当需要处理超出安全整数范围(±(2⁵³-1))的整数时,可以使用 BigInt:
const bigNumber = 1234567890123456789012345678901234567890n;
console.log(bigNumber * 2n); // 使用n后缀表示BigInt
字符串类型(String)
JavaScript 中的字符串可以使用三种引号:
let single = '单引号';
let double = "双引号";
let backticks = `反引号`;
反引号允许嵌入表达式:
let name = "张三";
console.log(`你好,${name}!`); // 输出:你好,张三!
console.log(`1加2等于${1 + 2}`); // 输出:1加2等于3
布尔类型(Boolean)
布尔类型只有两个值:true
和 false
,常用于逻辑判断:
let isAdult = true;
let isChild = false;
let result = 5 > 3; // 比较运算返回布尔值
console.log(result); // 输出:true
空值(Null)和未定义(Undefined)
null
表示"无"或"空"的明确赋值undefined
表示变量已声明但未赋值
let age = null; // 明确表示年龄未知
let height; // 未赋值,默认为undefined
最佳实践是使用 null
表示有意为之的空值,而 undefined
保留给未初始化的变量。
对象(Object)和符号(Symbol)
对象用于存储复杂数据结构,符号用于创建唯一标识符:
let user = { // 对象字面量
name: "李四",
age: 30
};
let id = Symbol("id"); // 创建唯一标识符
类型检测(typeof 运算符)
typeof
运算符用于检测变量类型:
typeof "hello" // "string"
typeof 123 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object"(历史遗留问题)
typeof {} // "object"
typeof function(){} // "function"
注意 typeof null
返回 "object"
是 JavaScript 的已知错误,但为了兼容性一直保留。
数据类型总结
理解 JavaScript 的数据类型是掌握这门语言的基础。记住:
- 七种原始类型是不可变的,而对象是可变的
- 动态类型系统提供了灵活性但也需要注意类型转换
typeof
是检查类型的有用工具,但对 null 和函数的检测有特殊情况
在后续学习中,我们会更深入地探讨每种数据类型及其特有的方法和行为。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考