我正在检查if(response[0].title !== undefined)
,但出现错误:
Uncaught TypeError:无法读取未定义的属性“ title”。
我正在检查if(response[0].title !== undefined)
,但出现错误:
Uncaught TypeError:无法读取未定义的属性“ title”。
Answers:
response[0]
未定义,请检查是否已定义,然后检查其属性标题。
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
它不是JavaScript关键字(尽管每个人似乎都认为是)。如果愿意,可以创建一个名为的变量undefined
,然后此检查将是不正确的。唯一正确的方法是检查(typeof myVar !== 'undefined')
。
undefined
?
我在上面的所有其他代码示例中遇到了麻烦。在Chrome中,这是对我有用的条件:
typeof possiblyUndefinedVariable !== "undefined"
我将不得不在其他浏览器中对其进行测试,然后看看事情进展如何。
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
}
在其中的一些答案中,对于使用方法存在根本性的误解typeof
。
不正确的
if (typeof myVar === undefined) {
正确
if (typeof myVar === 'undefined') {
原因是typeof
返回一个字符串。因此,您应该检查它是否返回了字符串“ undefined”而不是undefined
(不是用引号引起来的)字符串,它本身就是JavaScript的原始类型之一。该typeof
运营商将不会返回类型的值undefined
。
附录
如果使用不正确的比较,则从技术上讲,您的代码可能会起作用,但可能并非出于您的考虑原因。undefined
JavaScript中没有预先存在的变量-它不是可以与之进行比较的魔术关键字。您实际上可以创建一个名为的变量,undefined
并为其提供所需的任何值。
let undefined = 42;
这是一个示例,说明如何使用此方法来证明第一种方法不正确: