javascript 中==和===的區別


    對於JavaScript中比較運算符,可能大家用的比較多的是“==”、對於“===”很多人可能很陌生。=== 表示恆等,首先比較兩邊的變量數據類型是否相等,其次比較兩邊的變量的數值是否相等;== 表示相等即僅僅比較兩邊變量的數值是否相等。

 

一、“===”首先計算其操作數的值,然后比較這兩個值,比較過程沒有任何類型轉換

1、如果兩個值類型不相同,則它們不相等。

2、如果兩個值都是null或者都是undefined,則它們不相等。

3、如果兩個值都是布爾值true或false,則它們相等。

4、如果其中一個值是NaN,或者兩個兩個值都是NaN,則它們不相等。NaN和其他任何值都是不相等的,包括它本身!!!通過x!==x來判斷x是否為NaN,只有在x為NaN的時候,這個表達式的值才為true。

5、如果兩個值為數字,且數值相等,則它們相等。如果一個為0,另一個為-0,則它們同樣相等。

6、如果兩個值為字符串,且所含的對應位上的16位數完全相等,則它們相等。如果它們的長度或內容不同,則它們不等。兩個字符串可能含義完全一樣且所顯示出手字符也一樣,但具有不同編碼的16位值。JavaScript並不對Unicode進行標准化的轉換,因此像這樣的字符串通過"==="和"=="運算符的比較結果也不相等。

7、如果兩個引用值同一個對象、數組或函數,則它們是相等的。如果指向不同的對象,則它們是不等的。盡管兩個對象具有完全一樣的屬性。

例如



var param1= ‘1’, param2 = ‘1’ ;
param1 === param2; //類型和數值同時相等 true
var param3 = 1;
param1 === param3; //類型不相等和數值相等false
var param4 = 2;
param1 === param4; //類型和數值都不相等 false


var param1 = null, param2 = undefined;
param1 === param2; //false

 

二、 相等運算符“==”如果兩個操作數不是同一類型,那么相等運算符會嘗試一些類型轉換,然后進行比較

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

2、如果一個值是數字,另一個是字符串,先將字符串轉換為數字,然后使用轉換后的值比較。

3、如果其中一個值是true,則將其轉換為1再進行比較。如果其中一個值是false,則將基轉換為0再進行比較。

4、如果一個值是對象,另一個值是數字或字符串,則將對象轉換為原始值,然后再進行比較。對象通過toString()方法或valueOf()方法轉換為原始值。JavaScript核心的內置類首先嘗試使用valueOf(),再嘗試使用toString(),除了日期類,日期類只使用toString()轉換。那些不是JavaScript語言核心中的對象則通過各自的實現中定義的方法轉換為原始值。

5、其他不同類型之間的比較均不相等.

例如

var param1= ‘1’, param2 = ‘1’ ;
param1 == param2; //類型和數值同時相等true
var param3 = 1;
param1 == param3; //類型不相等和數值相等true
var param4 = 2;
param1 == param4; //類型和數值都不相等false

var param1 = null, param2 = undefined;
param1 === param2; //true

 


免責聲明!

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



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