-3

こんにちは私はいくつかの基本的なJavaScriptを調べているところですが、このコードに出くわしました

if('3'!=3)
{
   document.write("Hello");
}

これにより、画面にhelloが書き込まれますが、次のように変更すると次のようになります。

if('3'==3)
{
   document.write("Hello");
}

これもHelloを画面に書き込みます

誰かがこれの理由を知っていますか?比較でjavascriptが文字列を数値に変換することを読みました。条件を変更したときの異なる動作がわかりません。

ありがとう !!

4

3 に答える 3

3

これは、==演算子が比較する前に両方のオペランドを同じ型に変換しようとするために発生します。つまり、文字列'3'が数値と同じで3あることがわかり、それらが等しいことを示します。===演算子はオペランドを変換しようとしないため、これを回避するために演算子を使用します(厳密な等価性チェックを実行します)。

これは「こんにちは」とは書きません:

if('3'===3)
{
   document.write("Hello");
}

別の興味深い例を次に示します。

if(false == 0) {
    document.write("Hello");
}

こんにちは!これは、0に変換できる値と見なされるためですfalse。前と同じように、===演算子を使用するとこれが解決されます。

if(false === 0) {
    document.write("Hello"); // won't write hello
}
于 2012-05-15T22:33:40.657 に答える
2

これは、==がタイプを気にしないためです。

代わりに===を使用してください。

于 2012-05-15T22:33:57.163 に答える
2

厳密な比較を行う場合は、===演算子または!==

于 2012-05-15T22:34:06.317 に答える