js 判斷兩個變數是否相等
判斷兩個變數是否相等是程式設計中非常重要的運算。在處理原始值時,這種運算相當簡單,但涉及物件,任務就稍有點複雜。
ECMAScript 提供了兩套等性運算子:等號和非等號用於處理原始值,全等號和非全等號用於處理物件。
等號和非等號
在 ECMAScript 中,等號由雙等號(==)表示,當且僅當兩個運算數相等時,它返回 true。非等號由感嘆號加等號(!=)表示,當且僅當兩個運算數不相等時,它返回 true。為確定兩個運算數是否相等,這兩個運算子都會進行型別轉換。
執行型別轉換的規則如下:
- 如果一個運算數是 Boolean 值,在檢查相等性之前,把它轉換成數字值。false 轉換成 0,true 為 1。
- 如果一個運算數是字串,另一個是數字,在檢查相等性之前,要嘗試把字串轉換成數字。
- 如果一個運算數是物件,另一個是字串,在檢查相等性之前,要嘗試把物件轉換成字串。
- 如果一個運算數是物件,另一個是數字,在檢查相等性之前,要嘗試把物件轉換成數字。
在比較時,該運算子還遵守下列規則:
- 值 null 和 undefined 相等。
- 在檢查相等性時,不能把 null 和 undefined 轉換成其他值。
- 如果某個運算數是 NaN,等號將返回 false,非等號將返回 true。
- 如果兩個運算數都是物件,那麼比較的是它們的引用值。如果兩個運算數指向同一物件,那麼等號返回 true,否則兩個運算數不等。
重要提示:即使兩個數都是 NaN,等號仍然返回 false,因為根據規則,NaN 不等於 NaN。
下表列出了一些特殊情況,以及它們的結果:
表示式 | 值 |
---|---|
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 是數字,它們當然不同。
相關文章
- JavaScript判斷兩個變數是否相等JavaScript變數
- js判斷兩個物件是否相等JS物件
- 如何判斷JavaScript中的兩變數是否相等?JavaScript變數
- golang中判斷兩個slice是否相等與判斷值下的 陣列是否相等Golang陣列
- JavaScript 中,如何判斷兩個物件是否相等?JavaScript物件
- js判斷一個變數是否為空JS變數
- 【質數判斷】給定兩個數,判斷這兩個數是否互質?
- js如何判斷一個變數是否具有值JS變數
- js如何判斷一個變數是否是undefinedJS變數Undefined
- js如何判斷一個變數是否有值JS變數
- Javascript 判斷物件是否相等JavaScript物件
- js如何判斷一個變數是否是一個數字JS變數
- js如何判斷一個變數值是否為undefinedJS變數Undefined
- js判斷一個變數是否為字串型別JS變數字串型別
- 判斷陣列裡面的json 物件是否相等,相等則移除陣列JSON物件
- javascript判斷一個變數是否存在JavaScript變數
- js如何判斷一個變數是否宣告並賦值JS變數賦值
- javascript判斷一個變數是否是數字JavaScript變數
- javascript如何判斷一個變數是否宣告JavaScript變數
- JavaScript 專題之如何判斷兩個物件相等JavaScript物件
- javascript如何判斷一個變數是否是整數JavaScript變數
- 判斷物件是否相等的方法,==與 isEqual物件
- javascript如何判斷一個變數是否是undefinedJavaScript變數Undefined
- 【3分鐘速覽】如何“嚴謹地”判斷兩個變數是否相同變數
- java 兩個列表的元素是否相等且各自元素數量相等Java
- js判斷一個變數是否已經宣告或者宣告未賦值JS變數賦值
- JavaScript 判斷變數是否是函式JavaScript變數函式
- php中判斷變數是否為空PHP變數
- js如何判斷一個引數是否是陣列JS陣列
- 一道Js判斷物件是否相等面試題引發的故事JS物件面試題
- js判斷引數是否為非數字JS
- LC49判斷二叉樹是否相等二叉樹
- 原生js 判斷變數是一個陣列JS變數陣列
- js實現的判斷變數是否為數字程式碼例項JS變數
- Oracle PL/SQL判斷兩個欄位相等或不等問題OracleSQL
- 比較兩個陣列是否相等陣列
- shell比較兩個字串是否相等字串
- JS——判斷一個物件是否為空JS物件