JavaScript有7种基本数据类型:string、number、boolean、null、undefined、symbol、bigint,均为栈内存中按值访问的不可变类型,掌握其特性可提升代码准确性与安全性。
JavaScript 有 7 种基本数据类型(primitive types),它们是语言中最底层、不可再分的值类型,存储在栈内存中,按值访问。掌握它们的特点和适用场景,能帮你写出更准确、更安全的代码。
用于处理字符序列,比如用户输入、页面文案、API 返回的描述字段等。字符串是不可变的,所有“修改”操作实际都返回新字符串。
"hello"、`模板字符串 ${name}`、str.length、str.includes("a")
"" 和 null/undefined —— 它们语义不同,比如表单校验时 if (input.value === "") 表示用户填了但没输内容,而 if (!input.value) 会把 null、0、false 都误判为“空”JS 中没有 int/float 分离,所有数字都是 IEEE 754 双精度浮点数。适用于计数、计算、时间戳、坐标等绝大多数数值场景。
42)、小数(3.14)、指数(1e5)、特殊值(NaN、Infinity)0.1 + 0.2 !== 0.3;金融计算建议用字符串或专用库(如 decimal.js)Number.isFinite(value),比 typeof value === "number" 更严谨(能排除 NaN 和无穷)仅两个值:true 和 false,用于条件分支、开关状态、权限控制等。
if (arr) 虽然能运行,但空数组 [] 是真值,容易出错;明确写成 if (arr.length > 0) 或 if (Array.isArray(arr) && arr.length)
isLoaded、hasError、canSubmit 等带 is/has/can 前缀的形式,提升可读性undefined 是变量声明未赋值、函数无返回、对象属性不存在时的默认值;null 是开发者主动赋的“空值”,表示“有意为空”。
let user = null; 表示“当前无用户”,比 let user;(值为 undefined)语义更清晰value == null 虽能同时匹配 null 和 undefined,但易掩盖类型错误;推荐 value === null || value === undefined,或现代写法 value == null(仅限明确需要两者都捕获时)??(空值合并)比 || 更安全,例如 const name = inputName ?? "匿名",不会把 "" 或 0 当成“空”每个 Symbol() 调用都返回一个全局唯一的值,主要用于对象属性名,避免命名冲突。
const _id = Symbol("id"); obj[_id
] = 123)、实现迭代器([Symbol.iterator])、第三方库内部标记Symbol("foo") !== Symbol("foo"),即使描述相同也互不相等;若需跨文件复用,用 Symbol.for("key")
用于表示大于 2^53 - 1 的整数(即 Number.MAX_SAFE_INTEGER),常见于高精度 ID、密码学、大数据计算。
n,如 123n;构造函数:BigInt("9007199254740991")
number 混合运算(1n + 1 报错),必须显式转换;也不能用于 Math 方法或 JSON.stringify
这 7 种基本类型覆盖了 JS 开发中绝大多数数据表达需求。理解它们的差异(比如 null vs undefined、== vs ===、Symbol 的唯一性、bigint 的限制),能帮你少踩坑、多写对。实际编码中,结合 TypeScript 或严格模式("use strict")还能进一步约束类型行为。
基本上就这些。