繁体   English   中英

检查 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 将 stream 数据从 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 。

谢谢您的帮助!

你会想要使用typeof

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

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

尝试这样的事情:

if(item.image.filename in this)

或者

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

这是一个 object 或数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM