开发者问题收集

如何检查属性“length”为未定义的变量的长度?[重复]

2016-09-10
7458

我有一个变量,我们将其称为 myNiceVar ,我需要检查 myNiceVar 的值和长度, myNiceVar 变量未定义,对于 JavaScript 编译器来说,这意味着该变量已定义但还没有任何值

var myNiceVar;

if(myNiceVar.length){
  console.log("I have value!"); 
}else{
   console.log("I am empty"); 
}

现在 JavaScript 返回:

Uncaught TypeError: Cannot read property 'length' of undefined

如何检查类似的东西并且不出现任何错误

3个回答

您可以检查 typeof 是否等于 'object' 以及 length 是否为键。

请不要忘记先检查 null ,因为 null 是一个没有属性的对象。

var myNiceVar;

if (myNiceVar !== null && typeof myNiceVar === 'object' && 'length' in myNiceVar) {
    console.log("I have value!");
} else {
    console.log("I am empty");
}
Nina Scholz
2016-09-10

试试这个

var myNiceVar;

if (myNiceVar !== null && typeof myNiceVar === 'object' && 'length' in myNiceVar) {
    console.log("I have value!");
} else {...}
H D Ahir
2016-09-10

类型为 undefined 的项目(并且它是一个类型)没有 length 属性 - 只有类型为字符串和数组的项目才有。因此,正如 @redneb 所说,在检查长度之前,请扩展您的条件以检查非假值。

if (myVar && myVar.length) { ... }
Mitya
2016-09-10