JavaScript中怎麼理解=、==和===,如何釐清這三者之間的關係?
业精于勤,荒于嬉;行成于思,毁于随。
= : 賦值操作
=
==: 用來判斷兩個值是否相等,但是這裡的判斷是經過隱式轉換的結果。例如
==
1 == '1'; // true 1 == true; // true 0 == false; // true
===: 也是用來判斷兩個值是否相等,但是不會有隱式轉換的過程,而是直接判斷,因此也叫做絕對相等/全等。
===
1 === '1'; // false 1 === true; // false 0 === false; // false
1、對於string,number等基礎型,==和===是有區別的
不同型態間比較,==之比較「轉換成相同型別後的值」看「值」是否相等,===如果型別不同,結果就是不等
同型態比較,直接進行「值」比較,兩者結果一樣
2、對於Array,Object等高階類型,==和===是沒有區別的
進行「指標位址」比較
3、基礎類型與進階型,==和===是有區別的
對於==,將高階轉換為基礎類型,進行「值」比較
因為類型不同,===結果為false
'=': 表示賦值,
var a = 1, b = 2; return a = b; //返回2,为a赋值b,即a为2
'==': 判斷值是否相同,不判斷型別
var a = 1, b = '1'; return a == b; //返回true
'===': 精確判斷,不僅判斷值還判斷型別
var a = 1, b = '1'; return a === b; //返回false
1、對於string,number等基礎型,==和===是有區別的 不同型態間比較,==之比較「轉換成相同型別後的值」看「值」是否相等,===如果型別不同,結果就是不等 同型態比較,直接進行「值」比較,兩者結果一樣 2、對於Array,Object等高階類型,==和===是沒有區別的進行「指標位址」比較 3、基礎類型與進階型,==和===是有區別的 對於==,將高階轉換為基礎類型,進行「值」比較 因為類型不同,===結果為false
2、對於Array,Object等高階類型,==和===是沒有區別的進行「指標位址」比較
=是賦值運算子
let a=b // 将值b赋给变量a
== 和===是比較運算子
a == b 比较a与b值是否相等 a === b 比较a与b是否全等,值和类型都要相同
==會進行隱式資料型別轉換,===不會,就是比較兩側是否真的相等http://www.softwhy.com/articl...
「=」用來賦值,直接賦值。
"=="運算符,會先轉換,在運算。
"==="絕對相等,兩邊的值和型別都相等才相等。
盡量多用=== ==很容易出問題
=
: 賦值操作==
: 用來判斷兩個值是否相等,但是這裡的判斷是經過隱式轉換的結果。例如===
: 也是用來判斷兩個值是否相等,但是不會有隱式轉換的過程,而是直接判斷,因此也叫做絕對相等/全等。不同型態間比較,==之比較「轉換成相同型別後的值」看「值」是否相等,===如果型別不同,結果就是不等
同型態比較,直接進行「值」比較,兩者結果一樣
進行「指標位址」比較
對於==,將高階轉換為基礎類型,進行「值」比較
因為類型不同,===結果為false
'=': 表示賦值,
'==': 判斷值是否相同,不判斷型別
'===': 精確判斷,不僅判斷值還判斷型別
=是賦值運算子
== 和===是比較運算子
==會進行隱式資料型別轉換,===不會,就是比較兩側是否真的相等
http://www.softwhy.com/articl...
「=」用來賦值,直接賦值。
"=="運算符,會先轉換,在運算。
"==="絕對相等,兩邊的值和型別都相等才相等。
盡量多用=== ==很容易出問題