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 が認識するようになり、期待どおりに動作します。
したがって、「機能させる」方法があるようですが、上記の質問はまだ残っています。
よろしくお願いします!