测试JavaScript中是否未定义某些内容

Rai*_*nds 221 javascript undefined

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

未捕获的TypeError:无法读取未定义的属性"title".

amo*_*era 343

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

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

  • 尽管投票数量很多,但这并不是执行检查的好方法,因为`undefined`不是JavaScript关键字(尽管每个人似乎都认为是这样).如果你愿意,你可以创建一个名为`undefined`的变量,然后这个检查将是不正确的.唯一正确的方法是检查`(typeof myVar!=='undefined')`. (20认同)
  • @BadHorsie很有意义,我用你的评论更新了答案. (4认同)

Rio*_*ams 37

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

if(response[0] !== undefined) { ... }
Run Code Online (Sandbox Code Playgroud)

如果您仍需要明确检查标题,请在初步检查后执行此操作:

if(response[0] !== undefined && response[0].title !== undefined){ ... }
Run Code Online (Sandbox Code Playgroud)


Kar*_*lin 34

我上面的所有其他代码示例都遇到了问题.在Chrome中,这是对我有用的条件:

typeof possiblyUndefinedVariable !== "undefined"
Run Code Online (Sandbox Code Playgroud)

我将不得不在其他浏览器中测试它,看看我认为情况如何.

  • 相同 - 我发现`undefined`必须是一个字符串. (2认同)

小智 12

实际上你必须用Try/Catch块包围它,这样你的代码就不会停止工作了.像这样:

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


小智 8

类型:

var foo;
if (typeof foo == "undefined"){
  //do stuff
}
Run Code Online (Sandbox Code Playgroud)