JavaScript中使用find方法和if语句时undefined报错如何解决
错误原因
- 第一层错误:当
Array.find()没有匹配到结果时,返回值为undefined,此时直接访问currentlyActive._id会直接抛出对象访问异常,根本不会进入你写的条件判断逻辑。另外注意你报错提示里的变量名是activeSearch,但你代码里定义的变量是currentlyActive,先确认下实际代码的变量名是否统一,避免低级错误。 - 第二层错误:你写的条件判断逻辑本身存在语法和逻辑问题:
- 你判断的是
!== 'undefined',这里的'undefined'是字符串类型,和find返回的undefined原始值完全不相等 || null的写法不符合逻辑运算规则,该表达式实际等价于(currentlyActive._id !== 'undefined') || null,既不能实现判断_id不为null的需求,还会导致条件判断结果不符合预期
- 你判断的是
修复方案
方案1(推荐,现代JS环境支持)
使用可选链运算符?.避免访问空对象的属性抛出异常,配合!= null同时排除undefined和null两种情况:
if (currentlyActive?._id != null) { console.log('hello') }
方案2(兼容低版本JS环境)
先判断上层对象是否存在,再判断属性值是否符合要求:
// 先判断currentlyActive不是undefined也不是null if (currentlyActive != null && currentlyActive._id != null) { console.log('hello') }
内容的提问来源于stack exchange,提问作者Jerry Seigle
相关产品推荐
相关产品推荐

