JavaScript/TypeScript中==和===的區(qū)別詳解
在JS/TS項(xiàng)目里,除了能看到==操作符來(lái)判斷兩個(gè)變量是否相等外,我們還會(huì)看到===操作符,這兩者有什么區(qū)別嗎?
先上結(jié)論,
- 對(duì)于String, number這些基礎(chǔ)類型,==操作符會(huì)先把兩邊的變量進(jìn)行類型強(qiáng)制轉(zhuǎn)換成相同的類型再比較是否相等;===操作符則不會(huì)進(jìn)行類型轉(zhuǎn)換,而是直接進(jìn)行比較。
- 對(duì)于array, object這些高級(jí)類型,==和 ===是沒有區(qū)別的,因?yàn)樗鼈儽容^的是 “指針地址” 。
- 對(duì)于基礎(chǔ)類型和高級(jí)類型,== 和 ===是有區(qū)別的;==操作符會(huì)先把高級(jí)類型轉(zhuǎn)換為基礎(chǔ)類型之后,進(jìn)行值的比較;===操作符則不會(huì)進(jìn)行轉(zhuǎn)換,類型不同,直接返回false
也就是說(shuō),`==`操作符只要求比較兩個(gè)變量的值是否相等,`===`操作符則是要求兩個(gè)變量的值和類型都要相同;類似地,`!=`操作符會(huì)去做類型強(qiáng)制轉(zhuǎn)換,`!==`操作符則不會(huì)轉(zhuǎn)換類型。
我們寫個(gè)基礎(chǔ)類型變量的代碼示例一下:
66 == '66'; // 返回true 66 === '66' // 返回false
==操作符會(huì)把第一行里的字符串轉(zhuǎn)換成數(shù)字,與66再進(jìn)行比較,值相等,于是返回true;===操作符則不會(huì)做類型轉(zhuǎn)換,因?yàn)樽筮厰?shù)字,右邊字符串,兩者類型不同,就會(huì)返回false。
注意對(duì)于特殊值NaN(Not a Number),表示非數(shù)字,NaN和任何數(shù)(包括它自己)做相等比較,都會(huì)返回false,所以判斷NaN最好用isNaN()函數(shù);
而對(duì)于undefined和null,兩者的值相比較,會(huì)返回true。
代碼示例如下:
NaN == 6; // 返回false NaN === NaN; // 返回false null == undefined; // 返回true null === undefined; // 返回false
最后, 由于==和!=操作符帶來(lái)的類型隱式轉(zhuǎn)換規(guī)則非常繁瑣,還有為了避免數(shù)據(jù)類型混淆導(dǎo)致出現(xiàn)bug,還是推薦使用===操作符和!==操作符。
js在比較的時(shí)候如果是 == 會(huì)先做類型轉(zhuǎn)換,再判斷值得大小,如果是===類型和值必須都相等。


總結(jié)
到此這篇關(guān)于 JavaScript/TypeScript中==和===區(qū)別的文章就介紹到這了,更多相關(guān) js/ts中==和===的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JavaScript雙等號(hào)(==)與三等號(hào)(===)的區(qū)別舉例詳解
- JavaScript中比較操作符的用法及對(duì)比詳解(===、==、=== null、===““)
- JavaScript 中的 `==` 和 `===` 操作符詳解
- JavaScript中雙等號(hào)(==)和三等號(hào)(===)有何不同以及何時(shí)使用它們?cè)斀?/a>
- 詳解JavaScript運(yùn)算符中==和===的區(qū)別
- JS中==、===你分清楚了嗎
- javascript中的相等操作符(==與===區(qū)別)
- 一文詳解JavaScript中==和===的區(qū)別與正確使用場(chǎng)景
相關(guān)文章
javascript實(shí)現(xiàn)獲取指定精度的上傳文件的大小簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇javascript實(shí)現(xiàn)獲取指定精度的上傳文件的大小簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
Javascript和Java獲取各種form表單信息的簡(jiǎn)單實(shí)例
本篇文章主要是對(duì)Javascript和Java獲取各種form表單信息的簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02
JS去除字符串最后的逗號(hào)實(shí)例分析【四種方法】
這篇文章主要介紹了JS去除字符串最后的逗號(hào),結(jié)合實(shí)例形式分析了四種字符串遍歷、截取的操作方法,需要的朋友可以參考下2019-06-06
JS實(shí)現(xiàn)很實(shí)用的對(duì)聯(lián)廣告代碼(可自適應(yīng)高度)
這篇文章主要介紹了JS實(shí)現(xiàn)很實(shí)用的對(duì)聯(lián)廣告代碼,可實(shí)現(xiàn)固定相對(duì)位置懸浮展示及跟隨屏幕上下滑動(dòng)等功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
ES6模塊化的import和export用法方法總結(jié)
這篇文章主要介紹了ES6模塊化的import和export用法方法總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Javascript 對(duì)象(object)合并操作實(shí)例分析
這篇文章主要介紹了Javascript 對(duì)象(object)合并操作,結(jié)合實(shí)例形式分析了javascript基于jQuery的extend方法、對(duì)象屬性、遍歷賦值等操作實(shí)現(xiàn)對(duì)象合并相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2019-07-07
js使用for循環(huán)及if語(yǔ)句判斷多個(gè)一樣的name
這篇文章主要介紹了js使用for循環(huán)機(jī)if語(yǔ)句判斷多個(gè)一樣的name,此法比較實(shí)用,需要的朋友可以參考下2014-09-09

