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

Checking for undefined in if statements, leading to uncaught errors because item in if is undefined. What to do?

我看到在 SO 上使用的双簧管标签不多,但如果可以的话请帮忙,这更像是一个关于处理未定义的未捕获错误的一般性 javascript 问题。谢谢!~

我正在使用 Oboe.js 将数据从 MongoDB 地图集集合流式传输到网页。在 MongoDB JSON 中,一些 _id 的路径为 item.image.filename,这是一个图像的路径。有些没有 item.image.filename,因为并非所有流媒体项目都需要图像。当存在未定义的值时加载停止并且我在控制台中看到错误。

我希望如果不存在值,双簧管将作为其默认行为继续进行下一条记录。但是,没有图像路径的 _id 在我用来排除它们的 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。

感谢您的帮助!

尝试这样的事情:

if(item.image.filename in this)

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

这是一个对象或数组

您需要使用 typeof:

if(typeof item !== 'object' || typeof item.image !== 'object' || item.image.filename === undefined){
  console.log("undefined as far as you're concerned");
}

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