testingJavaScript中是否有未定义的内容

我检查if(response[0].title !== undefined) ,但我得到的错误:

Uncaught TypeError:无法读取未定义的属性“标题”。

未定义response[0] ,检查是否已定义,然后检查其属性标题。

 if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){ //Do something } 

我在上面的所有其他代码示例中遇到了问题。 在Chrome中,这是我工作的条件:

 typeof possiblyUndefinedVariable !== "undefined" 

我将不得不在其他浏览器中testing,看看事情是怎么回事。

只要检查response[0]是否是未定义的:

 if(response[0] !== undefined) { ... } 

如果您仍然需要明确检查标题,请在初始检查后执行:

 if(response[0] !== undefined && response[0].title !== undefined){ ... } 

其实你必须用Try / Catch块来包围它,所以你的代码不会停止工作。 喜欢这个:

 try{ if(typeof response[0].title !== 'undefined') { doSomething(); } }catch(e){ console.log('responde[0].title is undefined'); } 

types:

 var foo; if (typeof foo == "undefined"){ //do stuff } 

这将是因为response[0]本身是未定义的。

检查你是否确实存在response[0] ,错误似乎表明它不。

您必须首先检查response[0]是否未定义,如果不是,请检查其余部分。 这意味着在你的情况下, response[0]是不确定的。

检查condition == null ; 这将解决问题

我知道我迟到了7个月,但是我发现这个问题,看起来很有趣。 我在浏览器控制台上试了这个。

 try{x,true}catch(e){false} 

如果variablesx是未定义的,则捕获错误,如果不是,则返回true。 所以你可以使用eval函数将该值设置为一个variables

 var isxdefined = eval('try{x,true}catch(e){false}')