JavaScript比較運算符

JavaScript 語言中有兩種比較方式,轉換類型比較運算符 == 和嚴格比較運算符 ===。其中嚴格比較運算符僅當兩個操做數的類型相同且值相等時才爲true。而轉換類型比較運算符== 會在進行比較以前,將兩個操做數轉換成相同的類型,再來比較。code

比較運算符經常使用語邏輯語句中,它主要是用語斷定變量或者值是否相等。對象

相等運算符

相等運算符 == 會爲兩個不一樣類型的操做數轉換類型,而後進行嚴格比較。ip

示例:
console.log(1 == 1);    // true
console.log(1 == 2);    // false
console.log(1 == true); // true
console.log(1 == '1');  // true

從上述代碼中的1 == '1',輸出結果爲 true,就能夠看出 == 相等運算符,在對兩個操做數進行比較以前,會將兩個操做數轉換成相同的類型。內存

當使用比較運算符時,若是其中有布爾類型的操做數,值爲 true時會轉換爲1,值爲false時會轉換爲0。字符串

當兩個操做數都是對象時,JavaScript會比較其內部引用,當且僅當他們的引用指向內存中的相同對象時才相等,即他們在棧內存中的引用地址相同。console

嚴格相等運算符

嚴格相等運算符 === 不會對操做數進行類型轉換,只有當值相等而且類型也是相等時纔會返回 trueclass

示例:
console.log(1 === 1);     // true
console.log(1 === 2);     // false
console.log(1 === true);  // false
console.log(1 === false); // false
console.log(1 === '1');   // false

a === c d的比較結果能夠看出,不一樣類型的值進行比較時,會返回 false。變量

不等運算符

不等運算符 != 只有當操做數不相等時才返回true,若是兩操做數不是同一類型,會將操做數轉爲贊成類型再進行比較。引用

示例:
var a = 1;
var b = 2;
var c = '1';

console.log(a != 1);  // false
console.log(a != b);  // true
console.log(a != c);  // false

若是兩操做數爲對象類型,JavaScript會比較其內部引用地址,僅當他們在內存中引用不一樣對象時不相等。方法

嚴格不等運算符

嚴格不等運算符 !== 當操做數不相等或不一樣類型時返回 true。

示例:
var a = 1;
var b = 2;
var c = '1';

console.log(a !== 1);  // false
console.log(a !== b);  // true
console.log(a !== c);  // true

大於運算符

大於運算符 > ,只有當左操做數大於右操做數時才返回 true

示例:
console.log(5 > 1);   // true
console.log(5 > 10);  // false
console.log(5 > '5'); // false

大於等於運算符

大於等於運算符 >= ,只有當左操做數大於或者等於右操做數時才返回 true

示例:
console.log(5 >= 1);   // true
console.log(5 >= 5);   // true
console.log(5 >= 10);  // false
console.log(5 >= '5'); // true

小於運算符

小於運算符 < ,只有當左操做數小於右操做數時才返回 true

示例:
console.log(5 < 1);   // false
console.log(5 < 5);   // false
console.log(5 < 10);  // true
console.log(5 < '5'); // false

小於等於運算符

小於運算符 < ,只有當左操做數小於或者等於右操做數時才返回 true

示例:
console.log(5 <= 1);   // false
console.log(5 <= 5);   // true
console.log(5 <= 10);  // true
console.log(5 <= '5'); // true

使用比較運算時的類型轉換

當比較運算涉及類型轉換時,JavaScript 會按如下規則對字符串、數字、布爾、對象等類型的操做數進行操做:

  • 當操做數有數字類型和字符串類型時,會將字符串轉爲數字值。
  • 當其中一個操做數爲布爾型,布爾值爲true則轉換爲1,爲false則轉換爲0。
  • 若是一個對象與數字或字符串相比較,JavaScript 會嘗試返回對象的默認值。操做符會嘗試經過valueOftoString 方法將對象轉換爲其原始值。若是嘗試轉換失敗,會產生一個運行時錯誤。

動手小練習

  1. 請分別用比較運算符和嚴格比較運算符,來比較10 和 '10'的值是否相等。
  2. 請說出下列代碼的輸出結果:
console.log(1 <= 3); 
console.log(true != 5);   
console.log('1' >= false);  
console.log(2 === '5');
console.log(5 == '5');
相關文章
相關標籤/搜索