亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

全部開發者教程

JavaScript 入門教程

JavaScript 比較運算符

比較運算符用于比較兩個表達式的結果。如變量 num 加上變量 offset 是否大于0,大于就是一個比較運算符。

比較運算符還分為相等運算符關系運算符。

相等運算符:

  • == 相等
  • != 不相等
  • === 嚴格相等
  • !== 嚴格不相等

關系運算符:

  • > 大于
  • >= 大于等于
  • < 小于
  • <= 小于等于

運算符返回的都是布爾值。

運算符左右的值也被稱為操作數。

1. 相等運算符

相等運算符用于判斷運算符左右兩邊的值是否一致。

很多資料也會把相等稱為等于,嚴格相等被稱作嚴格等于。

1.1 相等

相等運算符在進行比較的時候,如果兩邊操作數數據類型不同,則會嘗試轉換成相同的類型再進行比較,如果轉換成相同類型后的值相同,則返回 true,否則返回 false。

如果比較的兩個操作數是引用類型,則會比較內部的引用(是否引用同一個內存地址上的值)。

'3' == 3; // true
3 == '3'; // true

2 == 1; // false

3 + 2 == 5; // true

var obj1 = {a: 1};
obj1 == {a: 1}; //false

var obj2 = obj1;
obj1 == obj2; // true

undefined == null; // true

1 == true; // true
0 == false; // true

因為內容比較簡單,推薦直接在控制臺調試,可以快速看到結果。

具體的轉化規則可以查閱隱式轉換章節。

注意:相等會對不同類型的比較數據進行隱式轉換,為了防止誤導閱讀代碼的開發者對轉換進行猜測,以及避免一些不可控的問題,大部分開發者會選擇不使用相等。

1.2 不相等

不相等的比較機制和相等一致,類型相同直接比較,不相同的會嘗試轉換成相同類型,碰到引用類型則比較引用地址是否一致。區別就在于最后返回的結果與相等相反,比較結果如果不一致,則返回 true,一致則返回 false。

1 != 1; // false
1 != 2; // true

var obj1 = {a: 1};
obj1 != {a: 1}; // true

1.3 嚴格相等

嚴格相等在比較的時候,碰到兩邊的操作數類型不同,則會直接返回 false,不會進行類型的轉換。

當類型一樣時,則比較等號兩邊的值是否相等,相等則返回 true,否則返回 false。

1 === '1'; // false;

0 === false; // false

嚴格相等更加嚴格,程序中使用嚴格相等可以避免許多不可控的類型轉換,特別是當開發者不熟悉轉換規則時候,應盡可能使用嚴格相等。

1.4 嚴格不相等

嚴格不相等在比較的時候,如果兩邊的操作數不相等則返回 true,否則返回 false。其和嚴格相等一樣,不會進行類型轉換。

1 !== 1; // false
1 !== 2; // true

1 !== '1'; // true
undefined !== null; // true

注意:在做不相等運算的時候,也應該盡可能選擇嚴格不相等,原因與建議使用嚴格相等一致。

2. 關系運算符

2.1 大于

大于運算符會在左操作數大于右操作數的時候返回 true,否則返回 false。

1 > 2; // false
2 > 2; // false
2 > 1; // true

2.2 大于等于

大于運算符會在左操作數大于等于右操作數的時候返回 true,否則返回 false。

1 >= 2; // false
3 >= 2; // true
2 >= 2; // true

2.3 小于

小于運算符會在左操作數小于右操作數的時候返回 true,否則返回 false。

1 < 2; // true
2 < 2; // false
3 < 2; // false

2.4 小于等于

小于等于運算符會在左操作數小于等于右操作數的時候返回 true,否則返回 false。

1 <= 2; // true
2 <= 2; // true
3 <= 2; // false

3. 注意點

3.1 字符串進行比較

假如比較運算符的兩側操作數都為字符串,則碰到中文,會將中文轉化成對應的 Unicode 碼,碰到英文則轉化成對應的 ASCII 碼,再對碼值進行比較。

'a' > 'z'; // false

a 的 ASCII 碼為 97,z 的 ASCII 碼為 122,兩者在比較的時候相當于是 97 > 122,結果就是 false。

如果碰到有多個字符,則會依次進行比較。

'aaaaaz' > 'aaaaaaaaa'; // true

兩個操作數前五位都是 a,所以第六位才能決定出結果。

4. 小結

比較運算符主要用于比較兩個值的大小關系,特別需要注意的是嚴格相等與相等的區別。