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";

この2つを分離する方法はありますか?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 に答える