js 判斷兩個變數是否相等

2021-07-10 06:12:29 字數 1509 閱讀 8170

判斷兩個變數是否相等是程式設計中非常重要的運算。在處理原始值時,這種運算相當簡單,但涉及物件,任務就稍有點複雜。

ecmascript 提供了兩套等性運算子:等號和非等號用於處理原始值,全等號和非全等號用於處理物件。

在 ecmascript 中,等號由雙等號(==)表示,當且僅當兩個運算數相等時,它返回 true。非等號由感嘆號加等號(!=)表示,當且僅當兩個運算數不相等時,它返回 true。為確定兩個運算數是否相等,這兩個運算子都會進行型別轉換。

執行型別轉換的規則如下:

在比較時,該運算子還遵守下列規則:

下表列出了一些特殊情況,以及它們的結果:

表示式值

null == undefined

true

"nan" == nan

false

5 == nan

false

nan == nan

false

nan != nan

true

false == 0

true

true == 1

true

true == 2

false

undefined == 0

false

null == 0

false

"5" == 5

true

等號和非等號的同類運算子是全等號和非全等號。這兩個運算子所做的與等號和非等號相同,只是它們在檢查相等性前,不執行型別轉換。

全等號由三個等號表示(===),只有在無需型別轉換運算數就相等的情況下,才返回 true。

例如:

var snum = "66";

var inum = 66;

alert(snum == inum); //輸出 "true"

alert(snum === inum); //輸出 "false"

在這段**中,第乙個 alert 使用等號來比較字串 "66" 和數字 66,輸出 "true"。如前所述,這是因為字串 "66" 將被轉換成數字 66,,然後才與另乙個數字 66 進行比較。第二個 alert 使用全等號在沒有型別轉換的情況下比較字串和數字,當然,字串不等於數字,所以輸出 "false"。

非全等號由感嘆號加兩個等號(!==)表示,只有在無需型別轉換運算數不相等的情況下,才返回 true。

例如:

var snum = "66";

var inum = 66;

alert(snum != inum); //輸出 "false"

alert(snum !== inum); //輸出 "true"

這裡,第乙個 alert 使用非等號,把字串 "66" 轉換成數字 66,使得它與第二個運算數 66 相等。因此,計算結果為 "false",因為兩個運算數是相等的。第二個 alert 使用的非全等號。該運算是在問:"snum" 與 "inum" 不同嗎?這個問題的答案是:是的(true),因為 snum 是字串,而 inum 是數字,它們當然不同。

JS判斷兩個變數是否相等

js中判斷兩個變數是否相等,是我們經常遇到的問題。今天我要 的問題是如何優雅的比較複雜變數。以上的方法都只能比較簡單變數,無法比較引用型別變數 如array,object 如何優雅判斷複雜變數是否相等?不多廢話,直接上 function isobject obj function isequal a...

js 判斷兩個物件是否相等

判斷兩個物件是否相等 isobjectvalueequal function a,b var aprops object.getownpropertynames a var bprops object.getownpropertynames b if aprops.length bprops.len...

js判斷兩個物件是是否相等

用object.is 只能判斷兩個物件應用的位址是不是一樣 如果兩個物件的應用位址不一樣。兩個物件對應的鍵和值是一樣的,應用位址不一樣。那麼這時候判斷兩個物件用object.is就行不通了 思路需要遞迴每個鍵看看對應的值是否一樣。鍵對應的值有兩種可能 如果是基本資料型別 判斷他們的值是否相等就行 如...