javascript es 6===isの違い

2133 ワード

==equality同等 和==identity恒久など
==両方の値の種類が違っている場合、まずタイプを変えて比較します.===両方のタイプが一致しない場合、タイプを変えないと、タイプが違ってきます.
まず恒等==
1.タイプが違ったら、必ず【等しくない】
2.両方が数値型で、同じ値なら【等しい】(!例外:片方がNaNであれば【等しくない】、NaNはisNaN()関数であるかどうかを判断する)
3.両方が文字列であり、値が同じ、つまり位置ごとの文字が同じであれば、【等しい】
4.両方ともtrueか両方ともfalseであれば【等しい】
5.両方が同じオブジェクト、関数、住所などを参照すると【等しい】
6.両方ともNullまたは両方ともundefinedであれば【等しい】
それに等しい=
1.二つの値の種類が同じなら、==比較
2.2つの値の種類が違ったら、まずタイプを変えて比較します.
a.片方がnullなら  もう一方はundefinedです.  それでは【等しい】
b.文字列と数値がある場合、文字列を数値に変換して比較する
c.一方がtrueなら、彼を1に変えて比較しています.一方がfalseなら、彼を0に変えて比較してみます.
d.オブジェクトの場合、もう一つは数値または文字列で、オブジェクトをベースタイプに変換した値を比較します.オブジェクトをベースタイプに変換し、そのtoStringまたはvalueOf方法を利用します.jsコア内蔵クラスは、toStringより先にvalueOfを試します.例外はDateで、DateはtoString変換を利用しています.jsコア以外のオブジェクトは、別の
e.他のどのグループも【等しくない】
例えば、「1」==true   //タイプは違っています.trueは先に数値1に変換して、今は「1」==1になり、「1」を1に変換して、比較1=1にして、等しいです.
を選択します
==等しい
==厳格イコール
例:
var a = 3; 
var b = "3"
a==b true  //    ,   ,   3       ,    
a===b  false  //          
//       boolean、string、number            ,           
1 == '01'    true
1 === '01'   false
'1' == '01'  false
'1' === '01' false
 
null==null  true
null===null  true
undefined==null  true
undefined===null  false
undefined==undefined  true
undefined===undefined  true
NaN==NaN  false
NaN===NaN  false
 
    
NaN==NaN  false 
NaN===NaN  false 
//NaN    ,         
 
//         ,           ,          
[]==''  true
[]===''  false
['1','2','3']=="123"  false
['1','2','3']==="123"  false
['1','2','3']=="1,2,3"  true
['1','2','3']==="1,2,3"  false
[]==true  false
[]===true  false
 
//null undefined
let n=null  
undefined
n  
null
let u  
undefined
u  
undefined
n==u  
true
n===u  
false
//null undefined  ==   true
 
//null,undefined         false
null==[]
false
null=='1'
false
null==1
false
undefined==1
false
undefined=='1'
false
undefined==[]
false
!==と上と同じように違います.