你有没有遇到过这样的场景:代码跑得好好的,突然报错“Cannot read property 'xxx' of undefined”,然后一脸懵?别慌!这大概率是因为你没判断变量是否为undefined。今天就来聊聊:如何优雅地判断一个变量是否为undefined——适合收藏,也适合发朋友圈或小红书,让你的前端小伙伴刮目相看!
Q:为什么不能直接用 `if (variable)` 判断?
很多新手会写成这样:if (variable) { ... },但注意!这个写法只对布尔值、数字0、空字符串等“假值”才返回false。如果变量是`0`、`""`(空字符串)、`false`,它们都是“假值”,但并不是undefined!比如:
let num = 0;if (num) console.log("不会执行"); // ❌ 不会打印console.log(typeof num); // "number" —— 它不是undefined!Q:那正确做法是什么?
推荐使用 typeof variable === 'undefined',这是最安全、最兼容的方式:
let myVar;if (typeof myVar === 'undefined') { console.log('变量未定义');} else { console.log('变量已定义');}✅ 无论变量是否存在、是否有值,都能准确识别。
Q:还有其他方式吗?比如用 `=== undefined`?
可以!但有坑!如果你在严格模式下,或者变量被意外赋值为`undefined`(比如`window.undefined = null`),就会出问题。所以建议优先用typeof。
Q:实际项目中怎么用?举个真实例子!
比如你在做用户信息请求,接口可能返回null或undefined:
function getUserInfo(userId) { const res = fetchUserFromAPI(userId); if (typeof res === 'undefined') { return { error: '用户数据未获取到' }; } return res;}这样写,哪怕后端返回了null,也不会报错,还能优雅处理——这才是老司机的操作!
Q:小贴士:如何快速判断?
记住一句话:永远不要假设变量存在。每次访问前先检查,就像出门带伞一样自然。可以用工具函数封装:
const isUndefined = (val) => typeof val === 'undefined';// 使用:if (isUndefined(someVariable)) { console.log('它真的不存在');}总结一下:判断undefined ≠ 判断真假值。用typeof才是王道!写代码如做人,稳一点,少踩坑。下次发朋友圈时,不妨附上这段代码:“你以为的bug,其实是你忘了判断undefined 😂”

