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}')