猿问

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

我正在使用 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 。

谢谢您的帮助!


元芳怎么了
浏览 155回答 2
2回答

米琪卡哇伊

你会想要使用typeof:if(typeof item !== 'object' || typeof item.image !== 'object' || item.image.filename === undefined){  console.log("undefined as far as you're concerned");}您需要知道的是您无法=== undefined对尚未声明的变量进行测试。但只要对象确实存在,就可以对不存在的对象属性进行测试。

冉冉说

尝试这样的事情:if(item.image.filename in this)或者if(!(item.image.filename in this))这是一个对象或数组
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答