最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript雙等號(==)與三等號(===)的區(qū)別舉例詳解

 更新時(shí)間:2025年07月28日 09:12:59   作者:bug_maker_996  
在JavaScript中判斷值相等有兩種操作符,即雙等號(==)和三等號(===),這篇文章主要給大家介紹了關(guān)于JavaScript雙等號(==)與三等號(===)區(qū)別的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言:

雙等號與三等號區(qū)別,是近年面試的高頻考點(diǎn),但相信不少前端老兵都只知道大概的區(qū)別。別慌,希望看完本文章能讓你掌握這個(gè)知識點(diǎn)。

一.等于操作符(==)

當(dāng)使用雙等號(==)進(jìn)行比較時(shí),JS首先會(huì)判斷兩個(gè)值類型是否相同。如果兩個(gè)值類型相同,則直接進(jìn)行比較;如果兩個(gè)值類型不同,會(huì)先將比較的兩個(gè)值轉(zhuǎn)換為相同的類型,然后再進(jìn)行比較(一般情況,下面會(huì)講特殊情況)。

在類型轉(zhuǎn)換過程中,JS遵循以下規(guī)則:

1.如果比較的兩個(gè)值類型相同,則直接返回比較結(jié)果。 

console.log(1 == 1) //true

2.如果比較的兩個(gè)值類型不同,則先將比較的兩個(gè)值轉(zhuǎn)換為相同的類型,然后再進(jìn)行比較(一般情況,下面會(huì)講特殊情況)。    

(1)如果一個(gè)值是數(shù)字,另一個(gè)值是字符串,JS會(huì)嘗試將字符串轉(zhuǎn)換為數(shù)字,然后再進(jìn)行比較。

console.log(1 == "1") //true

(2)Boolean 和其他任何類型比較,Boolean 首先被轉(zhuǎn)換為 Number 類型

console.log(true == 1) //true
console.log(true == "1") //true

(3)兩個(gè)值都是引用類型且類型相同,它們指向的是同一個(gè)內(nèi)存地址的話,返回true

console.log({} == {}) //false 雖然類型相同,但引用地址不同

const obj = {}
console.log(obj == obj) //true 引用地址相同

(4)如果一個(gè)值是引用類型,另一個(gè)值是原始類型,JS會(huì)嘗試使用valueOf()toString()方法將引用類型轉(zhuǎn)換為原始類型的值,然后再進(jìn)行比較。 

console.log("[object Object]" == {}) // true, 對象和字符串比較,沒有自定義valueOf方法,對象通過 toString 得到一個(gè)基本類型值

const obj = {
  valueOf: function () {
    return 1
  },
}
console.log(obj == 1) // true 對象和字符串比較,有自定義valueOf方法,調(diào)用valueOf方法

console.log("1,2,3" == [1, 2, 3]) // true, 數(shù)組和字符串比較,沒有自定義valueOf方法 數(shù)組通過 toString 得到一個(gè)基本類型值

3.在特殊情況下,如果比較的兩個(gè)值的類型不同,不會(huì)進(jìn)行類型轉(zhuǎn)換,直接進(jìn)行比較。

(1)null == undefined比較結(jié)果是true。null、undefined和其他任何結(jié)果的比較值都為false,但是nullnull,undefinedundefinedtrue。

console.log(null == undefined) //true

console.log(null == null) //true
console.log(null == "") //false
console.log(null == 0) //false
console.log(null == false) //false

console.log(undefined== undefined) //true
console.log(undefined == "") //false
console.log(undefined == 0) //false
console.log(undefined == false) //false

(2)NaN和其他任何類型比較是false(包括和它自己) 

console.log(NaN == NaN) //false
console.log(NaN == undefined) //false

二.全等操作符(===)

1.如果比較的兩個(gè)值類型不同,直接返回false。

console.log(1 === "1") //false

2.如果比較的兩個(gè)值是數(shù)字,并且它們具有相同的值,返回true。

3.如果比較的兩個(gè)值是字符串,并且它們具有相同的值,返回true。

4.如果比較的兩個(gè)值是布爾值,并且它們具有相同的真值或假值,返回true。

5.如果比較的兩個(gè)值是引用類型,它們指向的是同一個(gè)內(nèi)存地址,返回true。

console.log({} === {}) //false 雖然類型,內(nèi)容相同,但引用地址不同

const obj = {}
console.log(obj === obj) //true 引用地址相同

6.如果比較的兩個(gè)值都是null或都是undefined,它們被視為相等的,返回true

console.log(null === undefined) //false

console.log(null === null) //true
console.log(null === "") //false
console.log(null === 0) //false
console.log(null === false) //false

console.log(undefined=== undefined) //true
console.log(undefined === "") //false
console.log(undefined === 0) //false
console.log(undefined === false) //false

7.NaN和其他任何類型比較是false(包括和它自己)

console.log(NaN === NaN) //false
console.log(NaN === undefined) //false
console.log(NaN === 0) //false
console.log(NaN === null) //false
console.log(NaN === "") //false

三.區(qū)別:

1.雙等號比較可能會(huì)進(jìn)行類型轉(zhuǎn)換,是寬松比較;而三等號不會(huì)進(jìn)行類型轉(zhuǎn)換,是嚴(yán)格比較

2.nullundefined的比較不同

雙等號下nullundefined比較返回為true;而三等號下nullundefined比較返回為false

console.log(null == undefined) //true
console.log(null === undefined) //false

在實(shí)際開發(fā)中更推薦用三等號進(jìn)行比較,能提高安全性,因?yàn)殡p等號比較可能會(huì)進(jìn)行類型轉(zhuǎn)換,可能會(huì)帶來意外的結(jié)果。當(dāng)然你能正確使用雙等號的話,使用雙等號也無所謂,能提高代碼簡潔性。(但是據(jù)我所知,蠻多喜歡用雙等號的前端開發(fā)者多多少少容易出bug,小編之前幫一位同事改bug,發(fā)現(xiàn)幾個(gè)bug都是由雙等號引起的)

總結(jié)

到此這篇關(guān)于JavaScript雙等號(==)與三等號(===)區(qū)別的文章就介紹到這了,更多相關(guān)js雙等號和三等號區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript文件引用方式及其同步執(zhí)行與異步執(zhí)行示例代碼

    JavaScript文件引用方式及其同步執(zhí)行與異步執(zhí)行示例代碼

    js是一門單線程語言,因此如果在js的線程中出現(xiàn)耗時(shí)操作,就容易堵塞后續(xù)代碼的執(zhí)行,這篇文章主要介紹了JavaScript文件引用方式及其同步執(zhí)行與異步執(zhí)行的相關(guān)資料,需要的朋友可以參考下
    2025-08-08
  • 獲取url中用&隔開的參數(shù)實(shí)例(分享)

    獲取url中用&隔開的參數(shù)實(shí)例(分享)

    下面小編就為大家?guī)硪黄@取url中用&隔開的參數(shù)實(shí)例(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • countUp.js實(shí)現(xiàn)數(shù)字滾動(dòng)效果

    countUp.js實(shí)現(xiàn)數(shù)字滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了countUp.js實(shí)現(xiàn)數(shù)字滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JS生成唯一id方式之UUID和NanoID

    JS生成唯一id方式之UUID和NanoID

    這篇文章主要介紹了JS生成唯一id方式之UUID和NanoID,唯一id有了更好的方式,那就是NanoID,今天這篇文章記錄一下NanoID 正在取代 UUID?及js 生成uuid及NanoID的方法,下面來看文章的詳細(xì)介紹
    2021-12-12
  • JS判斷用戶用的哪個(gè)瀏覽器實(shí)例詳解

    JS判斷用戶用的哪個(gè)瀏覽器實(shí)例詳解

    這篇文章主要介紹了JS判斷用戶用的哪個(gè)瀏覽器的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • TypeScript中條件類型精讀與實(shí)踐記錄

    TypeScript中條件類型精讀與實(shí)踐記錄

    這篇文章主要給大家介紹了關(guān)于TypeScript中條件類型精讀與實(shí)踐的相關(guān)資料,,條件類型就是在初始狀態(tài)并不直接確定具體類型,而是通過一定的類型運(yùn)算得到最終的變量類型,需要的朋友可以參考下
    2021-10-10
  • JavaScript實(shí)現(xiàn)帶標(biāo)題的圖片輪播特效

    JavaScript實(shí)現(xiàn)帶標(biāo)題的圖片輪播特效

    這里給大家分享的是4屏帶標(biāo)題和文字描述的js圖片輪播代碼,完美兼容IE6。圖片滾動(dòng)切換,鼠標(biāo)放到數(shù)字選項(xiàng)卡即可切換圖片。點(diǎn)擊圖片跳轉(zhuǎn)到指定頁面,有需要的小伙伴可以參考下。
    2015-05-05
  • 利用JavaScript實(shí)現(xiàn)3D可旋轉(zhuǎn)粒子矩陣效果

    利用JavaScript實(shí)現(xiàn)3D可旋轉(zhuǎn)粒子矩陣效果

    dat.gui.js是一個(gè)一個(gè)輕量級的圖形用戶界面庫,或者說GUI組件,只有幾十KB,可以用于創(chuàng)建操作控制三維場景的菜單欄等。本文將利用dat.gui.min.js實(shí)現(xiàn)3D可旋轉(zhuǎn)粒子矩陣效果,感興趣的可以了解一下
    2022-06-06
  • js 動(dòng)態(tài)文字滾動(dòng)的例子

    js 動(dòng)態(tài)文字滾動(dòng)的例子

    在文本框中動(dòng)態(tài)滾動(dòng)文字的例子,需要的朋友可以參考下。
    2011-01-01
  • javascript實(shí)現(xiàn)雪花飄落效果

    javascript實(shí)現(xiàn)雪花飄落效果

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)雪花飄落效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評論

菏泽市| 额济纳旗| 大丰市| 大宁县| 常州市| 渑池县| 特克斯县| 大洼县| 越西县| 泗洪县| 尼木县| 新绛县| 洪泽县| 南昌市| 和平县| 定日县| 营山县| 会同县| 中西区| 五寨县| 泊头市| 榆树市| 迁西县| 如东县| 德令哈市| 虎林市| 上犹县| 平昌县| 柘城县| 类乌齐县| 耒阳市| 长治县| 通道| 贵溪市| 汤原县| 彝良县| 泰顺县| 弥渡县| 阜南县| 永仁县| 五寨县|