变量未定义
快速摘要
你访问的变量或属性还没有被赋值,结果是 `undefined`,对它继续操作往往会引发后续错误。
为什么发生
变量声明了但没有赋值就被读取
访问了对象上不存在的属性
函数没有返回值却被接收使用
异步数据还没回来就读取了变量
最小示例
✗ 错误代码
const user = { name: "Alice" };
console.log(user.age.toFixed(0));✓ 修复代码
const user = { name: "Alice" };
console.log((user.age ?? 0).toFixed(0));user.age 不存在,值为 undefined,调用 toFixed 会报错。用 ?? 0 给个默认值即可。
如何诊断
在出错位置前打印变量的实际值,确认是否为
undefined检查对象属性名是否拼写正确、是否真的存在
确认函数是否有
return语句
如何修复
用默认值兜底:
const value = maybe ?? defaultValue访问属性前先做存在性检查:
if (obj && obj.prop)给函数补上
return,或显式返回null表示无值
如何预防
使用 TypeScript,让未定义的访问在编译期就被发现
对可选属性使用可选链
?.和空值合并??