Javascript:分隔数组定义的值,该值为';s未定义且数组值为';没有定义

Javascript:分隔数组定义的值,该值为';s未定义且数组值为';没有定义,javascript,undefined,Javascript,Undefined,现在如何检查该值是否定义为未定义,或者是否确实未定义? 例如 有没有办法把这两者分开?可以使用for-in循环遍历数组,但有更轻松的方法吗?您可以检查索引是否位于给定数组中: 0 in a // => true 1 in a // => false 您可以使用中的运算符检查数组中是否存在给定索引,而不管其实际值如何 var t = []; t[0] = undefined; t[5] = "bar"; console.log( 0 in t ); // true console.

现在如何检查该值是否定义为未定义,或者是否确实未定义?
例如


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

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

0 in a // => true
1 in a // => false

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

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
}

Undefined意味着它是未定义的——如果您显式地将某物设置为Undefined,那么根据定义,它也是未定义的。您可以使用null,对照数组长度检查索引,等等。为了使问题更有意义,我简化了我的实际问题。数组实际上是一个来自数据的集合,其中undefined是一个有效值,它告诉我一些未定义的内容。当数组是[undefined]时,问题似乎就来了,这让我对这个问题的主题产生了疑问……答案和我的一样,但有一点解释:)我没有看到,我们同时发布:)
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
}