首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查if语句中的未定义项,导致未定义错误,因为if中的项未定义。该怎么办呢?

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

Stack Overflow用户
提问于 2020-12-03 01:26:20
回答 2查看 58关注 0票数 1

我看到没有太多的双簧管标签使用这样,但请帮助,如果你可以,这是一个一般的javascript问题,关于处理未定义的错误。谢谢!~

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

我希望,如果没有一个值,双簧管将继续作为它的默认行为的下一个记录。但是,没有图像路径的_ids在我用来排除它们的if语句中抛出了一个异常。我想要明确的是,item.image.filename不存在,没有值,也没有设置为null,它只是不存在。从我对MongoDB知之甚少的情况来看,拥有每个项目的灵活性是它最大的优势之一。

我相信我已经找到了用if语句来检查这个问题的所有方式,甚至使用了this块,但是在编译时,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。

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-03 01:47:22

你会想要使用typeof

代码语言:javascript
复制
if(typeof item !== 'object' || typeof item.image !== 'object' || item.image.filename === undefined){
  console.log("undefined as far as you're concerned");
}

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

票数 1
EN

Stack Overflow用户

发布于 2020-12-03 01:38:13

试着做这样的事情:

代码语言:javascript
复制
if(item.image.filename in this)

代码语言:javascript
复制
if(!(item.image.filename in this))

其中这是一个对象或数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65118572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档