4

我现在如何检查该值是否定义为未定义,或者它是否真的未定义?
例如。

var a = [];
a[0] = undefined;

// a defined value that's undefined
typeof a[0] === "undefined";

// and a value that hasn't been defined at all
typeof a[1] === "undefined";

有没有办法将这两者分开?可以使用 for-in 循环来遍历数组,但有没有更轻松的方法?

4

2 回答 2

3

您可以检查索引是否在给定数组中:

0 in a // => true
1 in a // => false
于 2012-05-14T10:20:22.827 回答
2

您可以使用in运算符检查给定索引是否存在于数组中,而不管其实际值如何

var t = [];
t[0] = undefined;
t[5] = "bar";

console.log( 0 in t ); // true
console.log( 5 in t ); // true
console.log( 1 in t ); // false
console.log( 6 in t ); // false

if( 0 in t && t[0] === undefined ) {
     // the value is defined as "undefined"
}

if( !(1 in t) ) {
    // the value is not defined at all
}
于 2012-05-14T10:22:48.147 回答