javascript
js 运算符_JS的相等和严格相等运算符(== amp; ===)
【===】被稱為嚴格相等運算符,【==】被稱為相等運算符,兩個都是用來比較兩邊的值是否相等,相等則返回true,否則返回false。
然鵝,他們的比較規則是不一樣的。
【===】嚴格相等運算符的比較規則:
1.兩邊數據的類型不同,直接返回false:
'1' === 1 => false2.兩邊都是相同類型的基礎數據類型(number, string, boolean)比較時,他們的值相等,則返回true,否則返回false:
1 === 1 => true '1' === '1' => true +0 === -0 => true3.NaN與NaN比較會返回false:
NaN === NaN => false // 相反地 NaN !== NaN => true4.兩邊都是引用數據類型時,比較的是指針指向的內存地址是否相等,相等返回true,否則返回false:
var a1 = [] var a2 = [] var a3 = a1 var j1 = {a: 1} var j2 = {a: 1} var j3 = j1 var f1 = function () {} var f2 = function () {} var f3 = f1 a1 === a2 => false a1 === a3 => true j1 === j2 => false j1 === j3 => true f1 === f2 => false f1 === f3 => true5.null和undefined會與自身嚴格相等:
null === null => true undefined === undefined => true // null與undefined 不會嚴格相等,因為他們類型不一樣:) null === undefined => false【==】相等運算符比較規則:
1.相同類型比較時,和嚴格相等比較規則一樣:
1 == 1 => true '1' == '1' => true [] == [] => false {} == {} => false2.兩邊都是基礎數據類型時,會將數值進行轉換,轉換成number類型在進行比較:
1 == true; // true // 等同于 1 === 10 == false; // true // 等同于 0 === 02 == true; // false // 等同于 2 === 12 == false; // false // 等同于 2 === 0'true' == true; // false // 等同于 Number('true') === Number(true) // 等同于 NaN === 1'' == 0; // true // 等同于 Number('') === 0 // 等同于 0 === 0'' == false; // true // 等同于 Number('') === Number(false) // 等同于 0 === 0'1' == true; // true // 等同于 Number('1') === Number(true) // 等同于 1 === 1'n 123 t' == 123; // true // 因為字符串轉為數字時,省略前置和后置的空格3.引用數據類型與基礎數據類型比較時,會將引用數據類型轉換為基礎數據類型的值,再進行比較:
其中Object轉為原始值:
所有object轉為boolean時都為true。
object轉為基礎數據類型時會先調用自身原型的toString()方法,如果沒有toString()方法,則會調用valueOf()。
[] == 1 => false [] == 0 => true ({}) == 1 => false // ({}) 調用toString方法得到"[object Object]", "[object Object]" 轉換為number為NaN,所以NaN === 1 為false ({}) != NaN => true4.兩邊有null或者undefined時,null和undefined 與其他類型比較時,都會返回false,他們與對方或者自身比較時,會返回true:
null == 1 => false null == '1' => false null == [] => false null == {} => false null == true => false null == undefined => true null == null => true undefined == undefined => true總結:建議使用嚴格相等運算符【===】
以上大概就是這兩者的區別,如果有不足或者錯誤,歡迎指正!
總結
以上是生活随笔為你收集整理的js 运算符_JS的相等和严格相等运算符(== amp; ===)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7如何共享打印机(教你win7如何
- 下一篇: springboot启动不打印日志信息_