關(guān)于JS中的全等和不全等、等于和不等于問(wèn)題
全等和不全等
全等和不全等比較的是符號(hào)兩側(cè)的操作數(shù),以全等操作符為例,如果操作數(shù)滿(mǎn)足全等則返回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ù)滿(mǎn)足相等則返回true,否則返回false。不過(guò)與全等和不全等操作符的區(qū)別在于:相等和不相等操作符會(huì)先對(duì)操作數(shù)進(jìn)行強(qiáng)制類(lèi)型轉(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 先是類(lèi)型轉(zhuǎn)換,之后進(jìn)行比較 console.log(str1!==str2) //true 對(duì)于全等操作福這兩個(gè)操作數(shù)不進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,自然就不全等 console.log(str2!=str3) //true console.log(str2!==str3) //true
對(duì)于相等和不相等操作符對(duì)操作數(shù)進(jìn)行強(qiáng)制類(lèi)型轉(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是相等的,但是無(wú)論和誰(shuí)比較,他們都不會(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)文章
在JavaScript里嵌入大量字符串常量的實(shí)現(xiàn)方法
在JavaScript文件里嵌入大量字符串常量是經(jīng)常遇到的事。有時(shí)為了省事,就把一些界面的HTML和CSS直接寫(xiě)在JS文件里2013-07-07
用Javascript輕松制作一套簡(jiǎn)單的抽獎(jiǎng)系統(tǒng)
用Javascript輕松制作一套簡(jiǎn)單的抽獎(jiǎng)系統(tǒng)...2006-12-12
設(shè)置iframe的document.designMode后僅Firefox中其body.innerHTML為br
設(shè)置iframe的document.designMode為On可以讓其可編輯,一般用在富文本編輯器組件中。這里僅列出各瀏覽器差異2012-02-02
JS使用eval()動(dòng)態(tài)創(chuàng)建變量的方法
這篇文章主要介紹了JS使用eval()動(dòng)態(tài)創(chuàng)建變量的方法,詳細(xì)分析了eval函數(shù)的功能及使用eval函數(shù)實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建變量的步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-06-06
childNodes.length與children.length的區(qū)別
childNodes.length與children.length的值常不一樣。2009-05-05
ES6頂層對(duì)象、global對(duì)象實(shí)例分析
這篇文章主要介紹了ES6頂層對(duì)象、global對(duì)象,結(jié)合實(shí)例形式分析了ES6頂層對(duì)象與global對(duì)象的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-06-06
element?UI中在?el-select?與?el-tree?結(jié)合組件實(shí)現(xiàn)過(guò)程
項(xiàng)目上實(shí)現(xiàn)某個(gè)功能,使用到了?el-select?和?el-tree?組合實(shí)現(xiàn),記錄下兩者結(jié)合的實(shí)現(xiàn)過(guò)程,對(duì)?el-select?與?el-tree?結(jié)合組件實(shí)現(xiàn)過(guò)程感興趣的朋友跟隨小編一起看看吧2023-02-02
js+canvas實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證碼功能
這篇文章主要介紹了js+canvas實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證碼功能,本文結(jié)合實(shí)例代碼分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-03-03

