全等和不全等
全等和不全等比較的是符號兩側的運算元,以全等運算子為例,如果運算元滿足全等則回傳true,否則回傳false,全等和不全等運算子在做比較相等時不會轉換運算元,也就是在不轉換的前提下直接進行全等或不全等的比較,
全等
符號:===
let str1="1"
let str2=1
console.log(str1===str2) //false
不全等
符號:!==
let str1="1"
let str2=1
console.log(str1!==str2) //true
相等和不相等
相等和不相等運算子也同樣是比較兩個運算元,以相等運算子為例,如果兩個運算元滿足相等則回傳true,否則回傳false,不過與全等和不全等運算子的區別在于:相等和不相等運算子會先對運算元進行強制型別轉換,轉后的運算元再進行比較,
相等
符號:==
let str1="1"
let str2=1
console.log(str1==str2) //true
console.log(str1===str2) //false
let flag=true
let num=1
console.log(flag==num) //true
console.log(flag===num) //false
不相等
符號:!=
let str1="1"
let str2=1
let str3="hello"
console.log(str1!=str2) //false 先是型別轉換,之后進行比較
console.log(str1!==str2) //true 對于全等操作福這兩個運算元不進行強制型別轉換,自然就不全等
console.log(str2!=str3) //true
console.log(str2!==str3) //true
對于相等和不相等運算子對運算元進行強制型別轉換的規則如下:
-
布林值會直接轉換成數值進行比較:false:0;true:1
-
字串遇到數值則會轉換為數值再進行比較
-
對于物件,如果兩個運算元都是物件則比較二者是否為同一個物件,如果兩個運算元指向同一個物件則回傳true,否則回傳false,如果其中的一個運算元為物件則會呼叫valueOf方法取到原始值,之后再進行比較(按照上述規則)
const p = new Object('zhangsan') //相當于const p=new String('zhangsan')
console.log(p.valueOf() == 'zhangsan') //true
console.log(p == 'zhangsan') //true
const p1={name:'zhangsan'}
let p2=p1
console.log(p1==p2) //true
p2={}
console.log(p1==p2) //false
- 對于null和undefined,null和undefined是相等的,但是無論和誰比較,他們都不會被強轉,
console.log(null==undefined) //true
console.log(null===undefined) //false 對于全等回傳結果依然是false
- 對于NaN,NaN不等于任何值包括他自己,涉及到運算子是NaN的比較,只要是相等運算子則回傳false,不相等則回傳true
console.log(NaN==NaN) //false
console.log(NaN!='') //true
console.log(NaN!=1) //true
console.log(NaN!={}) //true
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/301977.html
標籤:其他
下一篇:js陣列排序常用的幾種方法
