js里=、== 和===有什么區別?


說明:該文章是轉載后進行修改完善的,望大家有收獲。

=是賦值運算符,==是關系運算符; ===是全等運算符。

 

”==”與”===”是不同的,一個是判斷值是否相等,一個是判斷值及類型是否完全相等。第一個是相等符;第二個全等符;

其中第一個在比較的時候,會進行類型轉換,而第二個則不會,如:
alert('55' == 55);      //true

alert('55' === 55);  //false 

 

 

區別:”==”與”===”是不同的,一個是判斷值是否相等,一個是判斷值及類型是否完全相等。

A、下面的規則用於判定===運算符比較的兩個值是否相等的判斷條件
1、如果兩個值的類型不同,它們就不相同。

2、如果兩個值是數字Number,而且值相同,那么除非其中一個或兩個都是NaN (這種情況它們不是等同的),否則它們是等同的。值NaN永遠不會與其他任何值等同,包括它自身(奇怪的家伙),要檢測一個值是否是NaN,可以使用全局函數isNaN()。

3、如果兩個值都是字符串String,而且在字符串相同位置上的字符完全相同,那么它們完全等同,否則不等同。

4、如果兩個值都是布爾型true,或者兩個值都是布爾型false,那么它們等同。

5、如果兩個值引用的是同一個對象、數組或函數,那么它們完全等同。如果它們引用的是不同的對象(數組或函數),它們就不完全等同,即使這兩個對象具有完全相同的屬性,或兩個數組具有完全相同的元素。

6、如果兩個值都是null或都是undefined,它們完全相同。


B、下面的規則用於判定==運算符比較的兩個值是否相等的判斷條件
1、如果兩個值具有相同的類型,那么就檢測它們的等同性。如果這兩個值完全相同,它們就相等,否則不相等。

2、如果兩個值的類型不同,它們仍然可能相等。

  用下面的規則和類型轉換來檢測它們的相等性 ?

   2.1、如果一個值是null,另一個值是undefined,它們相等。

  2.2、如果一個值是數字,另一個值是字符串,把字符串轉換為數字,再用轉換后的值進行比較。

  2.3、如果一個值為true,將它轉化為1,再進行比較。如果一個值為false,把它轉化為0,再進行比較。

  2.4、如果一個值是對象,另一個值是數字或字符串,將對象轉換成原始類型的值,再進行比較。

      可以使用對象的toString()方法或valueOf()方法把對象轉化成原始類型的值。JavaScript核心語言的內部類通常先嘗試valueOf()方法轉換,再嘗試toString()方法轉換,但是對於Date類,則先執行toString()方法再執行valueOf()方法轉換。不屬於JavaScript核心語言的對象則可以采用JavaScript實現定義的方式把自身轉換成原始數值。

 

 

數據的轉換

所有對象繼承了兩個轉換方法:

第一個是toString(),它的作用是返回一個反映這個對象的字符串。

第二個是valueOf(),它的作用是返回它相應的原始值。

 


免責聲明!

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



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