为了账号安全,请及时绑定邮箱和手机立即绑定

检查 if 语句中是否未定义,导致未捕获的错误,因为 if 中的项目未定义。该怎么办?

检查 if 语句中是否未定义,导致未捕获的错误,因为 if 中的项目未定义。该怎么办?

元芳怎么了 2023-09-28 15:41:14
我正在使用 Oboe.js 将 MongoDB 图集集合中的数据流式传输到网页。在 MongoDB JSON 中,某些 _ids 的路径item.image.filename是图像的路径。有些没有 item.image.filename,因为并非所有流式项目都需要图像。当存在未定义的值并且我在控制台中看到错误时,加载停止。我希望如果没有存在值,双簧管将作为其默认行为继续到下一条记录。但是,没有图像路径的 _ids 在我用来排除它们的 if 语句中抛出异常。我想明确的是 item.image.filename 不存在,其中没有任何值或设置为 null,它只是不存在。据我对 MongoDB 的了解,让每个项目都独一无二的灵活性是它的一大优势。我相信我已经用 if 语句检查了所有的方式,甚至使用了 try catch 块,但是在编译时, if 语句本身抛出了这个错误:oboe-browser.min.js:5 Uncaught Error: Cannot read property 'filename' of undefined at oboe-browser.min.js:5 。如果未定义,if else 块将渲染没有图像的 html,否则渲染它。解决这个问题的一种方法是item.image.filename为每个记录添加一个,但我不想,有很多记录,这是我最后的手段。看来需要等待才能解决这个问题。这是我尝试过的:if(!item.image.filename) if(item.image.filename === undefined)if(item.image.filename == 'undefined')if(item.image.filename == undefined)if(item.image.filename === 'undefined')if(item.image.filename === null)if(item.image.filename == null)我采取了另一种路线,例如if(item.image.filename !== undefined)带引号和不带引号,以及 null 。谢谢您的帮助!
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

你会想要使用typeof:


if(typeof item !== 'object' || typeof item.image !== 'object' || item.image.filename === undefined){

  console.log("undefined as far as you're concerned");

}


您需要知道的是您无法=== undefined对尚未声明的变量进行测试。但只要对象确实存在,就可以对不存在的对象属性进行测试。


查看完整回答
反对 回复 2023-09-28
?
冉冉说

TA贡献1877条经验 获得超1个赞

尝试这样的事情:

if(item.image.filename in this)

或者

if(!(item.image.filename in this))

这是一个对象或数组


查看完整回答
反对 回复 2023-09-28
  • 2 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信