欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中雙等號(==)和三等號(===)有何不同以及何時使用它們詳解

 更新時間:2024年01月02日 15:43:00   作者:前端青山  
這篇文章主要給大家介紹了關(guān)于JavaScript中雙等號(==)和三等號(===)有何不同以及何時使用它們的相關(guān)資料,在JavaScript中"=="和"==="都是比較運算符,用于比較兩個值是否相等,需要的朋友可以參考下

一、等于操作符

等于操作符用兩個等于號( == )表示,如果操作數(shù)相等,則會返回 true

前面文章,我們提到在JavaScript中存在隱式轉(zhuǎn)換。等于操作符(==)在比較中會先進行類型轉(zhuǎn)換,再確定操作數(shù)是否相等

遵循以下規(guī)則:

如果任一操作數(shù)是布爾值,則將其轉(zhuǎn)換為數(shù)值再比較是否相等

let result1 = (true == 1); // true

如果一個操作數(shù)是字符串,另一個操作數(shù)是數(shù)值,則嘗試將字符串轉(zhuǎn)換為數(shù)值,再比較是否相等

let result1 = ("55" == 55); // true

如果一個操作數(shù)是對象,另一個操作數(shù)不是,則調(diào)用對象的 valueOf()方法取得其原始值,再根據(jù)前面的規(guī)則進行比較

let obj = {valueOf:function(){return 1}}
let result1 = (obj == 1); // true

nullundefined相等

let result1 = (null == undefined ); // true

如果有任一操作數(shù)是 NaN ,則相等操作符返回 false

let result1 = (NaN == NaN ); // false

如果兩個操作數(shù)都是對象,則比較它們是不是同一個對象。如果兩個操作數(shù)都指向同一個對象,則相等操作符返回true

let obj1 = {name:"xxx"}
let obj2 = {name:"xxx"}
let result1 = (obj1 == obj2 ); // false

下面進一步做個小結(jié):

  • 兩個都為簡單類型,字符串和布爾值都會轉(zhuǎn)換成數(shù)值,再比較

  • 簡單類型與引用類型比較,對象轉(zhuǎn)化成其原始類型的值,再比較

  • 兩個都為引用類型,則比較它們是否指向同一個對象

  • null 和 undefined 相等

  • 存在 NaN 則返回 false

二、全等操作符

全等操作符由 3 個等于號( === )表示,只有兩個操作數(shù)在不轉(zhuǎn)換的前提下相等才返回 true。即類型相同,值也需相同

let result1 = ("55" === 55); // false,不相等,因為數(shù)據(jù)類型不同
let result2 = (55 === 55); // true,相等,因為數(shù)據(jù)類型相同值也相同

undefined 和 null 與自身嚴格相等

let result1 = (null === null)  //true
let result2 = (undefined === undefined)  //true

三、區(qū)別

相等操作符(==)會做類型轉(zhuǎn)換,再進行值的比較,全等運算符不會做類型轉(zhuǎn)換

let result1 = ("55" === 55); // false,不相等,因為數(shù)據(jù)類型不同
let result2 = (55 === 55); // true,相等,因為數(shù)據(jù)類型相同值也相同

null 和 undefined 比較,相等操作符(==)為true,全等為false

let result1 = (null == undefined ); // true
let result2 = (null  === undefined); // false

小結(jié)

相等運算符隱藏的類型轉(zhuǎn)換,會帶來一些違反直覺的結(jié)果

'' == '0' // false
0 == '' // true
0 == '0' // true
?
false == 'false' // false
false == '0' // true
?
false == undefined // false
false == null // false
null == undefined // true
?
' \t\r\n' == 0 // true

但在比較null的情況的時候,我們一般使用相等操作符==

const obj = {};
?
if(obj.x == null){
  console.log("1");  //執(zhí)行
}

等同于下面寫法

if(obj.x === null || obj.x === undefined) {
    ...
}

使用相等操作符(==)的寫法明顯更加簡潔了

所以,除了在比較對象屬性為null或者undefined的情況下,我們可以使用相等操作符(==),其他情況建議一律使用全等操作符(===)

雙等號 "==" 運算符用于比較兩個值是否相等。在使用雙等號進行比較時,JavaScript 會在必要時進行類型轉(zhuǎn)換,然后再比較這兩個值。這意味著,即使兩個值的類型不同,雙等號也會嘗試將它們轉(zhuǎn)換為相同的類型,然后再進行比較。例如:"1" == 1 這個表達式會返回 true,因為 JavaScript 將字符串 "1" 轉(zhuǎn)換為數(shù)字 1 后再進行比較。

三等號 "===" 運算符也用于比較兩個值是否相等,但它不會進行類型轉(zhuǎn)換。如果兩個值的類型不同,直接返回 false。例如:"1" === 1 這個表達式會返回 false,因為一個是字符串,一個是數(shù)字,它們的類型不同。

推薦在大多數(shù)情況下使用 "===" 運算符進行嚴格的值比較,因為它不會進行類型轉(zhuǎn)換,可以避免一些潛在的錯誤。只有在明確知道兩個值的類型,并且希望進行類型轉(zhuǎn)換后再比較時,才應(yīng)該使用 "==" 運算符。

總之,了解 "==" 和 "===" 運算符的區(qū)別,以及在什么情況下使用它們,可以幫助開發(fā)者編寫更可靠的 JavaScript 代碼。

總結(jié)

到此這篇關(guān)于JavaScript中雙等號(==)和三等號(===)有何不同以及何時使用它們的文章就介紹到這了,更多相關(guān)JS雙等號(==)和三等號(===)不同點內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js canvas實現(xiàn)俄羅斯方塊

    js canvas實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細介紹了js canvas實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • layui表格 列自動適應(yīng)大小失效的解決方法

    layui表格 列自動適應(yīng)大小失效的解決方法

    今天小編就為大家分享一篇layui表格 列自動適應(yīng)大小失效的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js+html+css實現(xiàn)簡單日歷效果

    js+html+css實現(xiàn)簡單日歷效果

    這篇文章主要為大家詳細介紹了js+html+css實現(xiàn)簡單日歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 在線演示常用javascript特效

    在線演示常用javascript特效

    圖形顯示特效鼠標驅(qū)動圖片變化隨機顯示banner圖片隨意移動圖片定期消失字符連續(xù)消隱文字不停變色JavaScript容錯...圖片循環(huán)顯現(xiàn)QQ菜單生成器圖形顯示特效連續(xù)滾動的圖片圖片水中倒影純JavaScript時鐘圖片翻滾導(dǎo)航星星滿天閃爍左側(cè)的極酷...
    2008-04-04
  • JS實現(xiàn)n秒后自動跳轉(zhuǎn)的兩種方法

    JS實現(xiàn)n秒后自動跳轉(zhuǎn)的兩種方法

    這篇文章主要為大家詳細介紹了JS實現(xiàn)n秒后自動跳轉(zhuǎn)的兩種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • JavaScript將字符串轉(zhuǎn)換成字符編碼列表的方法

    JavaScript將字符串轉(zhuǎn)換成字符編碼列表的方法

    這篇文章主要介紹了JavaScript將字符串轉(zhuǎn)換成字符編碼列表的方法,實例分析了javascript中charCodeAt函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 詳解關(guān)閉令人抓狂的ESlint 語法檢測配置方法

    詳解關(guān)閉令人抓狂的ESlint 語法檢測配置方法

    這篇文章主要介紹了詳解關(guān)閉令人抓狂的ESlint 語法檢測配置方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • layui select獲取自定義屬性方法

    layui select獲取自定義屬性方法

    今天小編就為大家分享一篇layui select獲取自定義屬性方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Canvas放置反彈效果隨機圖形(實例)

    Canvas放置反彈效果隨機圖形(實例)

    下面小編就為大家?guī)硪黄狢anvas放置反彈效果隨機圖形(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • JavaScript數(shù)組迭代方法

    JavaScript數(shù)組迭代方法

    本文主要介紹了JavaScript數(shù)組迭代方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03

最新評論