Javascript中兩個等於號和三個等於號的區別


/* 一、Javascript中兩個等於號和三個等於號的區別 這兩種操作都會返回一個boolean值。一般來說我們把”==”稱之為相等,稱”===”為全等。 1.全等操作符 “===” 當用全等操作符”===”來判斷時, 首先檢查操作符兩邊操作數數據類型是否一致,若不一致,則直接返回false,否則, 才進行下一步判斷。如果是兩個boolean的比較,則”===”兩邊必須同為true或同為false, 才可以返回true,否則返回false.若兩相比較的是數字,那么只有當這兩個數字大小相等時才會返回true, 否則返回false。如果要比較的兩個變量是字符串,先比較兩個字符串的長度length是否相等,如果長度不一樣, 則返回false,如果相等,則從兩個變量的第一個字符開始比較是否相等,一直比較到最后一位,如果其中的某一位不想等, 則返回false,否則返回true,(注意:字符串的比較是不會忽略空格的,所以在比較兩個字符串是否相等時,為確保安全, 應該先去除空格,然后把兩個字符串同轉為大寫或者小寫之后再進行比較)。如: */

true === 1    //false
"1" === 1    //false

//boolean的比較
true === true  //true
true === false  //false

//string的比較
"hello" === "helloworrld" //false
"hello" === "world" //false
"hello" === " hello" //false
"hello" === "hellO" //false
"hello" === "hello" //true

//number的比較
1 === 1  //true
1 === 1.0 //true
1 === 1.2 //false

//null和undefined的比較
undefined === undefined  //true
null === null       //true
undefined === null    //false,兩者在"=="時才返回true

// 如果進行”===”比較的兩個操作數不是基本類型值,而是兩個對象,這時候判斷依據就是,判斷這兩個變量是否是”同一個”對象
var a, b, c; a = b = { name: '柳輕侯', city: '南京' }; c = { name: '柳輕侯', city: '南京' }; a === b   //true
a === c   //false

/* 兩個對象僅僅”長得一樣”是不夠的,a和c都是Object實例,且兩者擁有相同的屬性和值, 可是這兩個卻不是”同一個”對象,因為實際上a和c指向了兩個不同的實例,所以這兩個對象是不全等的。 而a和b卻是指向了同一個對象,換個說法,a和b是同一個對象的不同別名,他們實際上指向的對象是完全相同的, */


/* 2.相等操作符”==” 全等操作符在進行判斷的時候,如果兩個變量的類型不同,則直接返回false,而與此不同,”==”相等操作符在判斷的時候, 如果兩個變量的類型不同,則會做一個隱式的類型轉換,把要比較的兩個值轉化為相同的類型再做比較,那么這種轉化規則是怎么樣的? 在轉化不同數據類型時,相等和不等操作符遵循下面的基本規則 如果其中一個操作數是是boolean值,則在比較之前會先將boolean值轉化為number值,true轉化為1,false轉為0; 如果其中一個操作數是string類型,而另一個是number類型,則在比較之前先將string類型轉化為number類型再進行判斷; 在比較之前,undefined和null是不會轉為其他值進行比較的; 如果其中一個操作數是對象,而另一個是基本類型值,則在比較之前先將對象轉為基本類型值,然后再依據前面的規則進行后續的比較; 兩個操作數在比較時遵循下列規則 undefined和null是相等的,即:undefined == null; 如果有一個操作數是NaN,那么返回false,即使兩個操作數都是NaN,也會返回false; 如果兩個操作數是對象,則比較規則跟”===”的比較規則是一樣的,除非這兩個操作數是同一個對象,則返回true,否則返回false; 此處需要注意的是,NaN == NaN是返回false的,怎么去判定一個變量是不是NaN呢,用!=來判定,判定一個變量是否不等於NaN。比如: */

//如果需要判定一個變量是不是NaN,可以如下 //a是你需要判定的變量
if ((typeof a === "number") && a != NaN) {  //此處需要注意,NaN也是number類型
    //TODO 
} // 常見比較情況及其結果
null == undefined  // true 
"NaN" == NaN    // false 
5 == NaN      // false 
NaN == 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

/* “==”在比較不同類型值得時候會進行隱式的類型轉化,而”===”不會轉化, 全等一定相等,相等卻不一定全等,這是一個充分不必要條件。 且在相等比較的時候不會轉化為其他類型的值。NaN是不等於NaN 的,要判斷某個變量是不是NaN, 要用”!=”。對象和非對象在進行比較的時候會先轉為基本類型值然后再根據上面的規則進行比較。 */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM