4

文字列値をチェックするときは、「==」を使用します。しかし、'==='が使用されている例を見てきました。たとえば、代わりに

if("true" == "true"){
 alert('true');
}

これが使用されます:

if("true" === "true"){
 alert('true');
}

この背後にある理由は何ですか?どちらのユースケースも期待どおりに機能しているようです。

4

4 に答える 4

11

===オペレーターは、値が等しいだけでなく、比較される2つの項目も同じタイプであることを確認します。一方、==演算子は2つの項目の値が等しいことを確認するだけです。

コメントで@amnotiamが述べたように、抽象的同等性比較アルゴリズムも確認することをお勧めします

于 2013-03-26T19:26:10.323 に答える
5
10 == '10'  // true  | check value: 10 equal 10
10 == 10    // true  | check value: 10 equal 10

10 === '10' // false | check type: int not equal string
10 === 10   // true  | check type: int equal int, check value: 10 equal 10

タイプを確認するかどうか。

于 2013-03-26T19:30:42.180 に答える
3

===タイプで値をチェックするために使用されます。

var str="300";

//this gt execute
if(str==="300")
{
        alert("this alert get executed");
}


//this not execute
if(str===300)
{
        alert("this alert not get executed");    
}

以下の==場合、タイプをチェックしないため、両方のコードが有効です。

//this get execute
if(str=="300")
{
        alert("this alert get executed");
}


//this get execute
if(str==300)
{
        alert("this alert get executed");
}
于 2013-03-26T19:26:23.863 に答える
1

最初のチェックは単なる論理テストであり、2番目のチェックは論理テストとタイプテストです。

==片側が2番目の側と等しいかどうかを確認し、===左側が2番目の側と等しいが、同じタイプのものであるかどうかを確認します。

if("true" == "true")

両方が同じ文字列であるかどうかを確認します

if("true" === "true")

両方が同じ文字列であり、両方が文字列値であるかどうかを確認してください。

負の値と型の比較を行う!==演算子もあることに注意してください。

于 2013-03-26T19:26:36.183 に答える