我看到没有太多的双簧管标签使用这样,但请帮助,如果你可以,这是一个一般的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。
谢谢你的帮助!
发布于 2020-12-03 01:47:22
你会想要使用typeof
if(typeof item !== 'object' || typeof item.image !== 'object' || item.image.filename === undefined){
console.log("undefined as far as you're concerned");
}
您需要知道的是,您不能对未声明的变量进行=== undefined测试。但是,只要对象确实存在,对不存在的对象属性进行测试是可以的。
发布于 2020-12-03 01:38:13
试着做这样的事情:
if(item.image.filename in this)或
if(!(item.image.filename in this))其中这是一个对象或数组
https://stackoverflow.com/questions/65118572
复制相似问题