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

Test if something is not undefined in JavaScript

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

Uncaught TypeError: Cannot read property 'title' of undefined.


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

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


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

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

如果仍然需要显式检查标题,请在初始检查后执行此操作:

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


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

1
typeof possiblyUndefinedVariable !=="undefined"

我必须在其他浏览器中测试它,看看情况如何。


实际上,您必须用一个try/catch块包围它,这样您的代码就不会停止工作。这样地:

1
2
3
4
5
6
7
try{
    if(typeof response[0].title !== 'undefined') {
        doSomething();
    }
  }catch(e){
    console.log('responde[0].title is undefined');
  }


类型:

1
2
3
4
var foo;
if (typeof foo =="undefined"){
  //do stuff
}

检查EDOCX1[6]它可以解决问题


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


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

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

如果变量x未定义,则会捕获错误并将其设为假,否则将返回真。因此,可以使用eval函数将值设置为变量

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


您必须首先检查response[0]是否未定义,如果没有定义,请检查其余部分。这意味着在你的例子中,response[0]是未定义的。


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