0

JavaScript では、使用可能な場合にのみアクセスしようとしているオブジェクトのプロパティがあるため、オブジェクトを使用する前に条件付きの null/undefined チェックを行います。

if( object !== undefined && object != null ) // Occurs in IE8
{
    // Use object
    // Object.someProperty
}

FF と Chrome では、定義された動作は期待どおりです。オブジェクトが null であることがわかった場合、if ステートメント内には入りません。ただし、IE では、Object が null であるため、「someProperty」にアクセスしてはならないことについて不平を言います。しかし、それが私の条件付きチェックが存在する理由であり、FF & Chrome はそれを認識しています。

私の質問は、オブジェクトを停止する条件付きチェックがあるときに、オブジェクトを使用して行を実行しようとするif ステートメントでさえ、なぜそれが行われるのですか?

さらに、この問題の解決策は次のとおりです。

if( object !== undefined && object != null && true )
{
    // Use object
    // Object.someProperty
}

undefined および null チェックの後の "&& true" に注意してください。これにより、条件が実際には false と評価される必要があることを IE が認識するようになり、期待どおりに動作します。

したがって、「機能させる」方法があるようですが、上記の質問はまだ残っています。

よろしくお願いします!

4

1 に答える 1

2

object定義または宣言しない場合にのみ undefined にする必要があり、明示的に として設定する場合にobjectのみundefined にする必要があります。nullnull

objectの例undefined

var object;

objectの例null

var object = null;

私がそれを確認する方法は次のとおりです。

if (object) {

}

それが間違っていないことを確認しobjectます。誤って言うと、次の値のいずれかです。

false
0
-0
""
null
undefined
NaN

が宣言されているかどうかわからない場合はobject、その型を確認する必要があります。

if (typeof object !== "undefined") {

}

ただし、null でないかどうかも確認する必要がある場合は、次を使用します。

if (typeof object !== "undefined" && object !== null) {

}

もちろん、typeofチェックと true を組み合わせることもできます。

if (typeof object !== "undefined" && object) {

}

プロパティがあるかどうかを後で確認する必要がある場合は、次を使用します。

if ("someProperty" in object) {

}
于 2013-04-17T15:58:49.407 に答える