ホームページ  >  記事  >  ウェブフロントエンド  >  JS等価比較演算子のマッチングルールとif()条件の判定

JS等価比較演算子のマッチングルールとif()条件の判定

青灯夜游
青灯夜游転載
2022-10-26 19:10:581676ブラウズ

この記事ではJavaScriptの比較演算子(「JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定」と「JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定」)の一致規則とJS等価比較演算子のマッチングルールとif()条件の判定条件の判定結果を紹介しますので、ご参考になれば幸いです。

JS等価比較演算子のマッチングルールとif()条件の判定

1. まず結論を述べます

JS では合同演算子 ("= JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定")。等価演算子は比較中に型変換を実行せず、比較的高速であるためです。それでは、等価演算子 ("JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定") をいつ使用するのでしょうか?次の 2 つの状況は参考用です。

  • は、 オブジェクトの属性 が存在するかどうかを判断するために使用されます。

let obj = {};
if( obj.a JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 null ) {
    //这里相对于:obj.a JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 null || obj.a JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 undefined 的简写形式,jquery源码的推荐写法
}
  • 関数のパラメーター が存在するかどうかを判断するために使用されます

function fn( a, b ) {
    if( a JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 null ) {
        //这里也相当于 a JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 null || a JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 undefined 的简写
    }
}

要約: 以下通常、「 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 」を使用して正確に判断しますが、オブジェクトの属性や関数のパラメータが存在するかどうかを判断する場合は、「 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 」を使用できます。

2. 結果判定参照表

次に、さまざまなデータ型に対してこれら 2 つの演算子を使用して得られた結果をまとめてみましょう: 緑色は、結果は true、白は結果が false を意味します

#2.1 合同演算子 (“<span style="font-size: 18px;">JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定</span>") 演算結果

JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定

##2.2 等価演算子 ("JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定<span style="font-size: 18px;"> </span>”) 演算結果

JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定

#2.3 JS等価比較演算子のマッチングルールとif()条件の判定 条件判定結果

JS等価比較演算子のマッチングルールとif()条件の判定

#3. 具体的な判断の論理的説明

(転載元: js の型変換に暗黙的に含まれる比較演算子)

3.1 合同演算子 (“##JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定<span style="font-size: 18px;">#”)</span>注意: 厳密な一致、型変換なし、データ型と値は完全に一致している必要があります。

先判断类型,如果类型不是同一类型的话直接为false;

1 对于基本数据类型(值类型): Number,String,Boolean,Null和Undefined:两边的值要一致,才相等
      console.log(null JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 null)   // true
      console.log(undefined JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 undefined)  // true
   注意: NaN: 不会等于任何数,包括它自己
   console.log(NaN JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 NaN)  // false 

2 对于复杂数据类型(引用类型): Object,Array,Function等:两边的引用地址如果一致的话,是相等的
     arr1 = [1,2,3];
     arr2 = arr1;
     console.log(arr1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 arr2)   // true

3.2 等価演算子 (“

<span style="font-size: 18px;">JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定</span><span style="font-size: 18px;">”)</span> 非厳密一致: 型変換が発生しますが、前提条件を持つ 5 つの状況があります

## (次のコードは例として x JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 y を使用します)


x と y は両方とも null または未定義です:

ルール: 暗黙的な型変換なし、無条件に true を返します
  • console.log ( null JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 undefined );//true
    console.log ( null JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 null );//true
    console.log ( undefined JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 undefined );//true

  • x または y is NaN: NaN はどの数値にも等しくない
ルール: 暗黙的な型変換なし、無条件に false を返す
  • console.log ( NaN JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 NaN );//false

  • x と y の両方の文字列、ブール値、 number
ルール: 暗黙的な型変換があり、数値型ではないデータをnumber
  • console.log ( 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 true );//true    (1) 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 Number(true)
    console.log ( 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 "true" );//false   (1) 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 Number(&#39;true&#39;)
    console.log ( 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 ! "true" );//false  (1) 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 !Boolean(&#39;true&#39;)  (2) 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 !true  (3) 1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false  (4)1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 Number(false)
    console.log ( 0 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 ! "true" );//true
    console.log(true JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 &#39;true&#39;) // false

  • x または y が複合型に変換します データ型:複合データ型の元の値が最初に取得され、次に左側と比較されます。
複合データ型の元の値: 最初に valueOf メソッドを呼び出し、次に toString メソッドを呼び出します。
    valueOf: 通常はそれ自体を返します。デフォルトでは
  • 配列の toString : デフォルトでは、各要素を結合するために join メソッドが呼び出され、結合された文字列が返されます。 ##x と y はどちらも複雑なデータ型です:

    ルールのみ アドレスを比較し、アドレスが一致する場合は true を返し、一致しない場合は false を返します


    console.log ( [].toString () );//空字符串
    console.log ( {}.toString () );//[object Object]
    注意:  空数组的toString()方法会得到空字符串,
          而空对象的toString()方法会得到字符串[object Object] (注意第一个小写o,第二个大写O哟)
    
    console.log ( [ 1, 2, 3 ].valueOf().toString());//‘1,2,3’
    console.log ( [ 1, 2, 3 ] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 "1,2,3" );//true  (1)[1,2,3].toString() JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 &#39;1,2,3&#39;  (2)&#39;1,2,3&#39; JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 &#39;1,2,3&#39;
    console.log({} JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 &#39;[object Object]&#39;);//true

3.3 古典的な面接の質問
  • var arr1 = [10,20,30];
    var arr2 = [10,20,30];
    var arr3 = arr1;//将arr1的地址拷贝给arr3
           
    console.log ( arr1 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 arr2 );//虽然arr1与arr2中的数据是一样,但是它们两个不同的地址
    console.log ( arr3 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 arr1 );//true  两者地址是一样
           
    console.log ( [] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 [] );//false
    console.log ( {} JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 {} );//false

  • 3.4 異常な面接の質問

注意:八种情况转boolean得到false: 0 -0 NaN undefined null &#39;&#39; false document.all()

console.log([] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 0); //true 
  // 分析:(1) [].valueOf().toString() JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 0  (2) Number(&#39;&#39;) JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 0  (3) false JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 0  (4) 0 JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 0
console.log(![] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 0); //true
  // 分析: 逻辑非优先级高于关系运算符 ![] = false (空数组转布尔值得到true)
        
console.log([] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 []); //false
// [] 与右边逻辑非表达式结果比较
//(1) [] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 !Boolean([])   (2) [] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 !true  (3)[] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false  (4) [].toString() JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false  (5)&#39;&#39; JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false   (6)Number(&#39;0&#39;) JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 Number(false)
console.log([] JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 ![]); //true

onsole.log({} JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 {}); //false
// {} 与右边逻辑非表达式结果比较
//(1){} JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 !{} (2){} JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 !true  (3){} JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false  (4){}.toString() JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false  (5)&#39;[object Object]&#39; JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false  (6)Number(&#39;[object Object]&#39;) JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 false
console.log({} JS等価比較演算子のマッチングルールとJS等価比較演算子のマッチングルールとif()条件の判定条件の判定 !{}); //false
[関連する推奨事項: JavaScript ビデオ チュートリアル

プログラミングビデオ

]

以上がJS等価比較演算子のマッチングルールとif()条件の判定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。