正規表現 - なぜJavaScriptは空の文字列と等しい0を扱うのですか?



javascript 文字列比較 一致しない (6)

可能な重複:
暗黙の文字列比較、0 = ''、1 = '1'

javascriptで次のようなケースを実行すると、0(空の文字列)

var a   =   0;
var b   =   '';//empty string
if(a==b){
    console.log('equal');//this is printed in console
}else{
    console.log('not equal');
}

誰もがこれの背後にある理由は何ですか?

https://ffff65535.com


==型キャスティングを行います。 常に ===を使用してください。

あなたの例では、bの空文字列は0に変換されているので、aとbは同じです。


Javascriptは自動的に比較のために異なる型の変数を変換します。 これは、厳密に型指定されていない言語の共通の機能です。

変数を比較して型をチェックする必要がある場合は、 ===演算子を使用します。


0"" (空文字列)、 falseは、型キャスト時にすべて技術的に同じ値を持ちます。 厳密に扱う必要がある場合は、 ===を使用できます。

PHPのような同様のプログラミング言語でも同じです。

var a = 0;
var b = ''; //empty string
if(a == b){
    console.log('equal'); //this is printed in console
}else{
    console.log('not equal');
}

厳密な比較を行うには:

if(a === b){
    console.log('equal');
}else{
    console.log('not equal'); //this is printed in console
}

0=='' === true (数値ストリング''が0に評価されるため)または0==false === true (bool false0評価されるため) ===演算子を使用できる型を比較します。

MDNは、比較に関する有用な情報を見つけることができます。


ほとんどのプログラミング言語(javascriptを含む) "" (文字列)、 0 (整数)、 \x0 (null)は同じことを大いに意味します: "空"。 何が起こっているのかは、javascriptエンジンが"" == 0 false、 ==によって0を整数に変換するためです。 これもまた偽であるため、 0をnullに変換してfalseにして、 0を空の文字列に変換します。 (これが正しい変換順序であるかどうかはわかりません)。 条件を "正確"に一致させる(変換なし)にするには=== inplace of ==


強制のために。 通常は、JavaScriptでの比較に===を使用することをお勧めします。





comparison