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

2020/10/13 10:41 · javascript ·  · 0评论

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

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

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

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

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

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

如果仍然需要显式检查标题,请在初步检查之后进行:

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

我在上面的所有其他代码示例中遇到了麻烦。在Chrome中,这是对我有用的条件:

typeof possiblyUndefinedVariable !== "undefined"

我将不得不在其他浏览器中对其进行测试,然后看我想如何运行。

实际上,您必须在其周围加上一个Try / Catch块,以便您的代码不会停止工作。像这样:

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

类型:

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

这是因为response[0]它本身是不确定的。

检查是否condition == null; 它将解决问题

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

您必须首先检查是否response[0]未定义,只有在未定义时,才检查其余部分。这意味着您的情况response[0]是不确定的。

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

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

如果未定义变量x,则会捕获错误,并且错误为false,否则为true。因此,您可以使用eval函数将值设置为变量

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

在这些答案中,有一些关于如何使用的根本误解typeof

不正确的

if (typeof myVar === undefined) {

正确

if (typeof myVar === 'undefined') {

原因是typeof返回一个字符串。因此,您应该检查它是否返回了字符串“ undefined”而不是undefined(不是用引号引起来的)字符串,它本身就是JavaScript的原始类型之一typeof运营商将不会返回类型的值undefined


附录

如果使用不正确的比较,则从技术上讲,您的代码可能会起作用,但可能并非出于您的考虑原因。undefinedJavaScript中没有预先存在的变量-它不是可以与之进行比较的魔术关键字。您实际上可以创建一个名为的变量,undefined并为其提供所需的任何值。

let undefined = 42;

这是一个示例,说明如何使用此方法来证明第一种方法不正确:

https://jsfiddle.net/p6zha5dm/

本文地址:http://javascript.askforanswer.com/ceshishifouzaijavascriptzhongweidingyimouxieneirong.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!