ECMAScript運算符之《等性運算符》

等性運算符一般用在判斷兩個變量是否相等的運算。在處理原始值時,這種運算相當簡單,涉及對象,任務就稍有點複雜。

性運算符分:

1、等號和非等號用於處理原始值

2、全等號和非全等號用於處理對象

一、等號和非等號(比較值)
在 ECMAScript 中,

1、等號由雙等號(==)表示,當且僅當兩個運算數相等時,它返回 true。

2、非等號由感嘆號加等號(!=)表示,當且僅當兩個運算數不相等時,它返回 true。爲確定兩個運算數是否相等,這兩個運算符都會進行類型轉換。

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

1、如果一個運算數是 Boolean 值,在檢查相等性之前,把它轉換成數字值。false 轉換成 0,true 爲 1

2、如果一個運算數是字符串,另一個是數字,在檢查相等性之前,要嘗試把字符串轉換成數字

3、如果一個運算數是對象,另一個是字符串,在檢查相等性之前,要嘗試把對象轉換成字符串

4、如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字

來點栗子說事兒:

一、如果一個運算數是 Boolean 值,在檢查相等性之前,把它轉換成數字值。false 轉換成 0,true 爲 1

console.log(false == 0);//true
console.log(true == 1);//true
console.log(false == 1);//false
console.log(true == 0);//false
console.log(false != 0);//false
console.log(true != 1);//false
console.log(false != 1);//true
console.log(true != 0);//true

二、如果一個運算數是字符串,另一個是數字,在檢查相等性之前,要嘗試把字符串轉換成數字

console.log("12" == 12);//true
console.log("12" != 12);//false

三、如果一個運算數是對象,另一個是字符串,在檢查相等性之前,要嘗試把對象轉換成字符串

var obj = ['a']
var str = "a"
console.log(obj.toString());//a -> 轉換爲字符串之後變成a
console.log(obj == str);//true
console.log(obj != str);//fasle

四、如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字

var obj = ['12']
var Num = 12;
console.log(Number(obj));//12 -> 轉換爲數字之後變成12
console.log(obj == Num);//true

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

1、值 null 和 undefined 相等

2、在檢查相等性時,不能把 null 和 undefined 轉換成其他值

3、如果某個運算數是 NaN,等號將返回 false,非等號將返回 true

4、如果兩個運算數都是對象,那麼比較的是它們的引用值。如果兩個運算數指向同一對象,那麼等號返回 true,否則兩個運算數不等

我們的好朋友,栗子同志來了:

一、值 null 和 undefined 相等

var a = '';
console.log(a.innerHTML);//undefined
console.log(null == a.innerHTML);//true
console.log(null != a.innerHTML);//fasle

二、在檢查相等性時,不能把 null 和 undefined 轉換成其他值

這個就理解字面意思就行了,我不知道怎麼給你們找例子了,CGL對不起大家了。

三、如果某個運算數是 NaN,等號將返回 false,非等號將返回 true

console.log(NaN == null);//false
console.log(NaN == undefined);//false
console.log(NaN == NaN);//false
console.log(NaN == 0);//false
console.log(NaN != 0);//true

四、如果兩個運算數都是對象,那麼比較的是它們的引用值。如果兩個運算數指向同一對象,那麼等號返回 true,否則兩個運算數不等

例子有點不切當,大家將就看看吧,大概意思是這樣的。

var fn1 = function(){console.log('我是fn1')};
var fn2 = fn1
var fn3 = function(){fn1()}function(){ //跟單:www.gendan5.com

fn1()
fn2()
fn3()
console.log(fn1 == fn2);
console.log(fn2 == fn3);

var fn4 = [1,2,3];
var fn5 = [1,2,3];
console.log(fn4 == fn5);

二、全等號和非全等號(比較值和類型)
等號和非等號的同類運算符是全等號和非全等號。這兩個運算符所做的與等號和非等號相同,只是它們在檢查相等性前,不執行類型轉換。

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

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

var num1 = 30;
var num2 = 30;
var str = "30";

console.log(num1 === num2);//true -> 值一樣,類型都是數字
console.log(num1 === str);//false -> 值一樣,類型是數字和字符串
console.log(NaN === NaN);//false -> 直接false,硬記
console.log(num1 != str);//false -> 類型不一樣,但是值一樣
console.log(NaN != NaN);//true -> 直接true,硬記
console.log(NaN !== NaN);//true -> 直接true,硬記
console.log(num1 !== num2);//false -> 值和類型都一樣

其他的看《等號和非等號》就可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章