關(guān)于JS中的全等和不全等、等于和不等于問題
全等和不全等
全等和不全等比較的是符號(hào)兩側(cè)的操作數(shù),以全等操作符為例,如果操作數(shù)滿足全等則返回true,否則返回false。全等和不全等操作符在做比較相等時(shí)不會(huì)轉(zhuǎn)換操作數(shù),也就是在不轉(zhuǎn)換的前提下直接進(jìn)行全等或不全等的比較。
全等
符號(hào):===
let str1="1" let str2=1 console.log(str1===str2) //false
不全等
符號(hào):!==
let str1="1" let str2=1 console.log(str1!==str2) //true
相等和不相等
相等和不相等操作符也同樣是比較兩個(gè)操作數(shù),以相等操作符為例,如果兩個(gè)操作數(shù)滿足相等則返回true,否則返回false。不過與全等和不全等操作符的區(qū)別在于:相等和不相等操作符會(huì)先對(duì)操作數(shù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換,轉(zhuǎn)后的操作數(shù)再進(jìn)行比較。
相等
符號(hào):==
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
不相等
符號(hào):!=
let str1="1" let str2=1 let str3="hello" console.log(str1!=str2) //false 先是類型轉(zhuǎn)換,之后進(jìn)行比較 console.log(str1!==str2) //true 對(duì)于全等操作福這兩個(gè)操作數(shù)不進(jìn)行強(qiáng)制類型轉(zhuǎn)換,自然就不全等 console.log(str2!=str3) //true console.log(str2!==str3) //true
對(duì)于相等和不相等操作符對(duì)操作數(shù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換的規(guī)則如下:
布爾值會(huì)直接轉(zhuǎn)換成數(shù)值進(jìn)行比較:false:0;true:1
字符串遇到數(shù)值則會(huì)轉(zhuǎn)換為數(shù)值再進(jìn)行比較
對(duì)于對(duì)象,如果兩個(gè)操作數(shù)都是對(duì)象則比較二者是否為同一個(gè)對(duì)象,如果兩個(gè)操作數(shù)指向同一個(gè)對(duì)象則返回true,否則返回false。如果其中的一個(gè)操作數(shù)為對(duì)象則會(huì)調(diào)用valueOf方法取到原始值,之后再進(jìn)行比較(按照上述規(guī)則)
const p = new Object('zhangsan') //相當(dāng)于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
對(duì)于null和undefined,null和undefined是相等的,但是無論和誰比較,他們都不會(huì)被強(qiáng)轉(zhuǎn)。
console.log(null==undefined) //true console.log(null===undefined) //false 對(duì)于全等返回結(jié)果依然是false
對(duì)于NaN,NaN不等于任何值包括他自己。涉及到操作符是NaN的比較,只要是相等操作符則返回false,不相等則返回true
console.log(NaN==NaN) //false console.log(NaN!='') //true console.log(NaN!=1) //true console.log(NaN!={}) //true
到此這篇關(guān)于JS中的全等和不全等、等于和不等于的文章就介紹到這了,更多相關(guān)js 全等和不全等、等于和不等于內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
實(shí)例代碼詳解javascript實(shí)現(xiàn)窗口抖動(dòng)及qq窗口抖動(dòng)
這篇文章主要介紹了實(shí)例代碼詳解javascript實(shí)現(xiàn)窗口抖動(dòng)及qq窗口抖動(dòng)的相關(guān)資料,需要的朋友可以參考下2016-01-01基于iScroll實(shí)現(xiàn)下拉刷新和上滑加載效果
這篇文章主要為大家詳細(xì)介紹了基于iScroll實(shí)現(xiàn)下拉刷新和上滑加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07H5基于iScroll實(shí)現(xiàn)下拉刷新和上拉加載更多
這篇文章主要為大家詳細(xì)介紹了H5基于iScroll實(shí)現(xiàn)下拉刷新和上拉加載更多效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07js獲取系統(tǒng)的根路徑實(shí)現(xiàn)介紹
js如何獲取系統(tǒng)的根路徑,在本文給出了詳細(xì)的方法,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-09-09JavaScript6 let 新語法優(yōu)勢(shì)介紹
這篇文章主要介紹了JavaScript6 let 新語法優(yōu)勢(shì)介紹的相關(guān)資料,需要的朋友可以參考下2016-07-07基于d3.js/neovis.js/neod3.js實(shí)現(xiàn)鏈接neo4j圖形數(shù)據(jù)庫的圖像化顯示功能
neovis.js?由vis.js支持的圖形可視化以及來自Neo4j的數(shù)據(jù)。這篇文章主要介紹了基于d3.js/neovis.js/neod3.js實(shí)現(xiàn)鏈接neo4j圖形數(shù)據(jù)庫的圖像化顯示功能,需要的朋友可以參考下2022-02-02js使用for循環(huán)及if語句判斷多個(gè)一樣的name
這篇文章主要介紹了js使用for循環(huán)機(jī)if語句判斷多個(gè)一樣的name,此法比較實(shí)用,需要的朋友可以參考下2014-09-09