JavaScript != 不相等運算子
不相等運算子與相等運算子(==)是相對的。
關於相等運算子可以參閱JavaScript == 等號運算子一章節。
只要理解了相等運算子,那麼也就等同於理解了不相等運算子。
為了便於理解,本文再通過程式碼例項詳細介紹一下不相等運算子的用法。
一.運算子分析:
當運算子兩側的運算數不相等時,表示式返回true,否則返回false。
關鍵問題來了,運算數怎麼樣算是不相等,在普通觀念中,只要兩側的資料不同即是不相等。
然而在JavaScript中行不通,因為可能會涉及到資料型別轉換問題,首先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let a=1; let b="1"; console.log(a != b);
程式碼執行效果截圖如下:
最終表示式列印結果為false,說明兩個運算元相同。
但是從字面上看很明顯是不相同的,一個數值型別,一個是字串型別。
但是在比較之前,會首先進行資料型別轉換,嘗試將字串型別轉換成數值型別。
關於資料型別轉換更多內容可以參閱JavaScript 資料型別轉換一章節。
與不相等運算子類似的是JavaScript !== 不全等運算子,但是不全等運算子不會進行資料型別轉換。
二.比較規則如下:
前文提到過,此運算子在進行比較之前,如果兩側運算數資料型別不同,則首先嚐試進行資料型別轉換。
也就是說,比較需要遵循一定的規則,簡單總結如下:
(1).如果有運算數是布林值,那麼首先將其轉換為數值,再進行比較,true轉換為1,false轉換為0。
(2).如果運算數一個是數值型別,一個是字串型別,首先嚐試將字串轉換為數值型別。
(3).如果運算數一個是物件,另一個數字,那麼首先嚐試將物件轉換為數字。
(4).如果運算數一個是物件,另一個字串,那麼首先嚐試將物件轉換為字串。
(5).如果運算數是兩個不同的物件,那麼返回值一定是true。
(6).null與undefined比較返回值是false。
(7).如果有一個運算數是NaN,那麼返回值一定是true。
三.程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let a=true; let b="1"; console.log(a != b);
程式碼執行效果截圖如下:
列印結果為false,說明兩個運算數相同,程式碼分析如下:
(1).首先布林值轉換為數字1,字串"1"轉換為數字1。
(2).然後再進行比較,所以列印結果為false。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let a={}; let b={}; console.log(a != b);
程式碼執行效果截圖如下:
上述程式碼可能對初學者有一定的迷惑,明明兩個一模一樣的物件。
應該是相同了,為什麼列印結果還是true呢,這是因為物件是引用型別資料。
引用型別資料比較的是引用型別資料的儲存地址,兩個物件很明顯在不同的位置儲存。
關於引用型別與值型別可以參閱JavaScript值型別和引用型別一章節。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let a=undefined; let b=null; console.log(a != b);
程式碼執行效果截圖如下:
列印結果為false,這一點要注意一下。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let a=NaN; let b=NaN; console.log(a != b);
程式碼執行效果截圖如下:
NaN是一個比較特殊的情況,它與任何值都不相等,包括它自己。
算是比較狠的一個角色,所以上述列印結果為true,這一個也需要特別注意一下。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let a=["螞蟻部落"]; let b="螞蟻部落"; console.log(a != b);
程式碼執行效果截圖如下:
a是一個陣列物件,b為字串,那麼兩個資料進行比較的時候。
首先嚐試將陣列物件轉換為字串,["螞蟻部落"]轉換為字串為"螞蟻部落"。
最終上述程式碼的列印結果為false,如果一個運算元是物件,另一個是數字,那麼首先將物件轉換為數字。
上面對此運算子進行了簡單例項演示,如果對本文有任何意見或者建議,可以在底部留言。
相關文章
- javascript運算子——邏輯運算子JavaScript
- JavaScript /= 運算子JavaScript
- JavaScript += 運算子JavaScript
- JavaScript -= 運算子JavaScript
- JavaScript *= 運算子JavaScript
- JavaScript %= 運算子JavaScript
- JavaScript |= 運算子JavaScript
- JavaScript <<= 運算子JavaScript
- JavaScript >>>= 運算子JavaScript
- JavaScript >>= 運算子JavaScript
- JavaScript &= 運算子JavaScript
- JavaScript ^= 運算子JavaScript
- JavaScript in 運算子JavaScript
- JavaScript:運算子JavaScript
- JavaScript運算子JavaScript
- javascript中&&運算子和||運算子的使用JavaScript
- JavaScript << 左移運算子JavaScript
- JavaScript new 運算子JavaScript
- JavaScript typeof 運算子JavaScript
- JavaScript (+) 加法運算子JavaScript
- JavaScript + 加法運算子JavaScript
- JavaScript * 乘法運算子JavaScript
- JavaScript / 除法運算子JavaScript
- javascript位運算子JavaScript
- JavaScript 剩餘運算子JavaScript
- JavaScript (+) 正號運算子JavaScript
- JavaScript + 正號運算子JavaScript
- JavaScript (>) 大於運算子JavaScript
- JavaScript 展開運算子JavaScript
- JavaScript (<) 小於運算子JavaScript
- JavaScript == 等號運算子JavaScript
- JavaScript - 減法運算子JavaScript
- JavaScript void 運算子JavaScript
- JavaScript 兩個++ 運算子JavaScript
- JavaScript !== 不全等運算子JavaScript
- JavaScript % 求餘運算子JavaScript
- JavaScript - 負號運算子JavaScript
- JavaScript 條件運算子JavaScript