javascript七种原始类型是string、number、boolean、null、undefined、symbol、bigint,它们直接存值、不可变、按值传递;其中null和undefined语义不同,typeof null返回"object"是历史bug,symbol保证唯一性,bigint以n结尾且不与number混算。

JavaScript 的七种原始类型不是抽象概念,而是每天写代码时反复打交道的具体角色。理解它们各自适合干什么、容易在哪出错,比死记定义更有用。
字符串:处理文本内容和用户输入
几乎所有涉及文字的场景都用 string:表单输入、API 返回的 JSON 字段、URL 参数、日志消息、模板渲染等。注意它不可变,所以拼接或格式化时实际在创建新值。
- 用户昵称、错误提示、按钮文案都直接用字符串字面量
- 从 input.value 或 localStorage.getItem() 拿到的永远是字符串,哪怕看起来像数字(如 '123'),别直接用于计算
- 用模板字面量(`Hello ${name}`)替代加号拼接,可读性高且支持换行
- 判断空值要区分 ''、' ' 和 null/undefined:trim() 后再检查长度更稳妥
数字:做计算、控制流程、处理时间与精度
number 是唯一能参与算术运算的原始类型,但它的浮点数本质决定了必须小心精度问题。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 计数器、定时器间隔、CSS 像素值、数组索引都依赖 number
- 0.1 + 0.2 !== 0.3 是典型陷阱,金融类计算建议用整数单位(如分)或专用库
- 用 Number.isNaN() 判断 NaN,避免用 == 或 ===(因为 NaN !== NaN)
- 检测是否为有效数字:用 Number.isFinite(value),它排除 Infinity 和 NaN
布尔值:驱动条件逻辑和状态开关
boolean 只有两个值,但它在 if、while、三元表达式、React 的 JSX 条件渲染中无处不在。
- 表单校验结果(isEmailValid)、加载状态(isLoading)、开关配置(isDarkMode)都该用 true/false
- 别把字符串 'true' 或数字 1 当作布尔值传入,它们在 if 中虽转为真,但语义混乱
- 利用“假值”做简写:arr && arr.length、obj?.name || '匿名',但要清楚哪些值会触发 fallback
- 显式转换用 Boolean() 或 !!,比如 !!value 是快速转布尔的惯用写法
null 和 undefined:明确表达“空”与“未初始化”
两者都代表“没有值”,但语义不同:null 是开发者主动设的“这里本该有,但现在为空”;undefined 是系统默认的“还没给”。
- DOM 查询失败返回 null(如 document.getElementById('xxx') 找不到时)
- 函数没写 return、对象访问不存在属性、声明未赋值变量 → 得到 undefined
- 接口字段允许为空时,后端通常返回 null;前端初始化状态可用 undefined 表示“尚未请求”
- 判断时优先用 value === null 或 value === undefined,避免用 ==(因 null == undefined 为 true)
Symbol 和 BigInt:解决特定痛点的工具型类型
它们不像前五种那样高频,但在关键场景不可替代。
- Symbol 用来做唯一键:防止 mixin 或插件向对象注入属性时发生命名冲突,比如 const CUSTOM_ID = Symbol('id')
- 作为对象属性时,Symbol 键不会被 for...in、Object.keys() 遍历到,适合放内部标识
- BigInt 专治超大整数:ID 超过 2⁵³−1(如某些数据库主键)、密码学运算、高精度计时,结尾加 n 即可,如 123456789012345678901234567890n
- BigInt 不能和 number 混合运算,也不能用于 Math 方法,需统一类型再操作
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










