Skip to content

变量未定义

快速摘要

你访问的变量或属性还没有被赋值,结果是 `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,让未定义的访问在编译期就被发现

  • 对可选属性使用可选链 ?. 和空值合并 ??

相关资源

相关术语

相关课程

  • 变量

    了解变量声明与赋值的区别

相关练习

← 返回语言