5

以下のコードを見つけましたが、理解できません。

if (!-[1, ] && !window.XMLHttpRequest) {
    document.execCommand("BackgroundImageCache", false, true);
}

どういうif(!-[1,])意味ですか?ありがとう

4

3 に答える 3

5

古いInternetExplorerを検出するのはハックです。最新のブラウザ(-[1,]と同様)にありますが、古いIE(否定)にあります。正しい結果を返す最初のバージョンはIE9です。-1false!NaNtrue

于 2012-07-27T06:06:14.310 に答える
4

その正確なコードは 以外のものを決して生成しないfalseため、入力しても意味がありません。これはレンダリングされた出力であり、サーバー側の変数によっては、異なる場合があると思います。

を使用しているのを見るとwindow.XMLHttpRequest、ブラウザー チェックの形式が悪い可能性もあることがわかります。[1,]配列を作成しますが、末尾のコンマにより、Chrome と Internet Explorer で配列の扱いが異なります。Chrome はこれを 1 つの数値のみの配列として認識し、暗黙的に数値にキャストできますが、IE はこれを数値にキャストできない 2 つの項目を含む配列と見なします。

-[1,0]NaNすべてのブラウザで生成されます。すべてのブラウザで-[1]生成されます。-1したがって、IE では-[1,]生成され (したがってコードが実行されます)、他のブラウザーでは生成されます (コードは実行されません)。NaN-1

これはひどいハックです。使用しないでください。

が機能するかどうかを知りたい場合はwindow.XMLHttpRequest、それ以外のことではなく、具体的にテストしてください。

于 2012-07-27T06:02:52.443 に答える
0

これは特に悪いコードです:

-[1, ]結果は-1になります。

!-[1, ]常にfalseになります。

[]は配列を意味するので、これは悪いことです。その配列に複数の値がある-場合、NaNが得られます。

于 2012-07-27T06:06:15.400 に答える