国产黄色免费网站_久久天天做天天爱综合色_精品国产一区久久久_成人黄色激情网站_久久成人在线视频_美女一区二区在线观看_亚洲精品免费一区亚洲精品免费精品一区 _91精品国产综合久久精品麻豆

由‘==’和‘===’引出的js的隱式轉換問題

2018-6-1    高勁

‘==’和‘===’都是Javascript中的比較運算符,都是比較運算符兩邊是否相等。對于‘==’和‘===’的區別,大家也都知道:

  ‘==’僅僅是比較運算符兩邊的數值是否相等,如果數值相等則返回true;‘===’不僅會判斷運算符兩邊的數值是否相等,并且還會判斷兩邊的類型是否相等,只有數值和類型都相等才會返回true。雖然知道以上的判斷依據已經能解決絕大數此類問題,但是如果往其中深究來說,會有同學問:在比較的時候‘===’先判斷類型,如果類型不同就直接返回false,這個沒什么問題。但是如果是‘==’比較兩個不同類型的數據時,具體是怎么進行計算判斷的呢?

 既然是不同類型進行比較,肯定最終參與比較的結果必須是同一個類型的,因此JS會存在一個隱式轉換的問題,并且很多JS的隱式轉換很難通過console.log()等方法直觀的觀察到,因此很多初學者會對JS的隱式轉換感到疑惑。

 首先讓我們回憶一下,咱們的JS中一共有哪些數據類型?

       六大數據類型
       基本數據類型(簡單數據類型)
       number 數值型(NaN)
       string 字符串
       boolean 布爾型
       undefined 未定義
       null 空引用
       引用數據類型(復雜數據類型)
       object

       JS基礎中,我們學習到咱們的JS中一共有六種數據類型,分為基本數據類型(簡單數據類型)和引用數據類型(復雜數據類型),不同類型的值進行比較的時候,存在隱式轉換的問題,咱們通過‘==’來驗證一下JS隱式轉換的情況。

       1.我們首先來看看下列的語句計算結果:

console.log(NaN==true);//false
console.log(NaN==false);//false
console.log(NaN==0);//false
console.log(NaN==1);//false
console.log(NaN==NaN);//false

       由上面的例子可以看出,NaN屬于Number數據類型中一個特殊情況,如果‘==’兩邊同為Number數據類型的數字,很直觀的可以看出值是否相同一眼就可以看出結果,但是作為Number類型的特殊情況,NaN在進行比較的時候,也會有特殊的結果:如果 x 或 y 中有一個為 NaN,則返回 false;

       2.我們繼續看看下列的語句計算結果:

console.log(null == undefined); //true(特殊情況)---------------------------------
console.log(null == ''); //false
console.log(undefined == ''); //false

      在上述例子中,引出了一個null,null是一個簡單數據類型,它的意義就是一個空應用,但是你如果通過console.log(typeof null) 來打印結果的時候卻發現,結果竟然是object?此時你可能會懷疑人生,然后瘋狂的翻閱之前學習的資料,因為object明明是一個復雜數據類型,怎么會在判斷null這個簡單數據類型的類型時打印出來呢?其實,這個問題屬于一個歷史問題。咱們學習的JS在發展過程中是通過ECMAScript來確定規范的,每年都會有新的規定和規范提出,在JS的發展過程中,null一開始的作用就是用來指向一個空地址,讓開發者在創建數據的時候,先用null賦值給還未給值的對象用于標準初始化。但是其實咱們開發過程中很少用到,但是這個仍作為規范留了下來。又因為typeof是根據數據的前幾位判斷數據類型的,null相當于空指針,前幾位是地址的格式,所以判斷結果就為object。又因為undefined值是派生自null值的,因此ECMA-262規定對他們的相等測試要返回true。所以這一情況判斷的條件為:如果 x 與 y 皆為 null 或 undefined 中的一種類型,則返回 true(null == undefined // true);否則返回 false(null == 0 // false);

       3.請看下列例子:

console.log(true == '123'); //false
console.log(true == '1'); //true
console.log(false == '0'); //true
 
console.log(true == !0); //true
 
console.log([] == []); //false
console.log([] == ![]); //true 比較地址 ------------------------------------------------
var a = c = [];
var b = [];
console.log(a == b); //false
console.log(a == !b); //true
console.log(a == c); //true
 
console.log(Boolean([]) == true); //true
console.log(Number([]) == 0); //true
console.log(Number(false) == 0); //true

       其實比較的邏輯為:如果 x,y 類型不一致,且 x,y 為 String、Number、Boolean 中的某一類型,則將 x,y 使用 Number 函數轉化為 Number 類型再進行比較;

      使用Number函數可以將其他的數據類型轉變為Number類型,這一同為Number類型的數據,對比起來就會變得十分簡單。值得注意的是在上述的例子中,兩個空數組進行比較,結果返回的結果仍然為false,這個是怎么回事呢?其實這個很好理解,因為數組也是對象的一種,是復雜數據類型,所以用變量儲存對象時儲存的其實是地址。對象的內容相同,但是儲存在堆區的位置不同,所以地址也是不同的,所以在判斷的時候返回的是false。

      其實在JS中還有很多的隱式轉換情況,以上只是針對于‘==’的隱式轉換情況,對于這些問題,在實際開發過程中,需要作為開發者不斷的學習和積累,這也是咱們作為開發者的一個要求之一。

日歷

鏈接

個人資料

藍藍設計的小編 http://www.newchinaweekly.com

存檔

亚洲图片在线视频| 日本精品在线观看视频| 日韩av高清在线播放| 激情成人中文字幕| 97se亚洲国产综合在线| 唐人社导航福利精品| 久cao在线| 亚洲av无码乱码国产麻豆| 精品亚洲一区二区三区四区五区高| 欧美精品videossex变态| 国产精品白浆一区二小说| 欧美国产精品久久| 精品区在线观看| 久久精品视频8| 亚洲一卡二卡在线观看| youjizz在线视频| 天天操天天干天天插| 国产成人三级一区二区在线观看一| 西西44rtwww国产精品| 538精品在线观看| 欧美成人aaa片一区国产精品| 国产又粗又猛视频免费| 涩涩视频在线观看| 国产精品无码久久av| 国产男男gay体育生白袜| 国产一区二区三区三州| 初体验·韩国| 天干天干啦夜天天天视频| 97在线资源在| 岛国毛片av在线| 国产色播av在线| 欧美粗大gay| 91成人看片| 日日夜夜一区二区| 国产欧美日韩精品一区二区免费 | 国产91精品对白在线播放| 啪啪激情综合网| 性欧美xxxx免费岛国不卡电影| 视频一区中文| 国产jizzjizz一区二区| 国产色产综合产在线视频| 国产精品久久久久桃色tv| 136国产福利精品导航| 亚洲成人在线观看视频| 色拍拍在线精品视频8848| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日本欧美www| 18激情网站| 在线观看视频污| 成人影院www在线观看| 美女av在线免费看| 日本综合精品一区| 久久资源中文字幕| 日韩黄色小视频| 在线一区二区视频| 亚洲一二三在线| 欧美华人在线视频| 999视频在线观看| 日本黄色播放器| 成人在线观看a| 色哟哟视频在线| 久久精品这里只有精品| 亚洲AV无码成人片在线观看| 在线香蕉视频| 日韩激情电影免费看| 日韩天堂av| 国产丝袜在线精品| 日韩视频免费看| 99re在线观看| 青青青青草视频| 亚洲成人av免费在线观看| 色婷婷av国产精品| 国产毛片视频| 污污的网站在线免费观看| 亚洲经典视频| 久久婷婷成人综合色| 欧美日韩在线亚洲一区蜜芽| 91免费视频国产| 人人妻人人添人人爽欧美一区| 黄色网址在线视频| 欧美人与牲动交xxxxbbbb| 中文字幕影音在线| 亚洲精品午夜av福利久久蜜桃| 亚洲免费看黄网站| 亚洲激情在线视频| 国产精品一区二区三区久久久 | 国产伦精品一区二区三区视频我| 手机看片1024日韩| 青草视频在线免费直播| 国产一区二区亚洲| 精品高清美女精品国产区| 亚洲影院高清在线| 免费看污黄网站| 欧美三级韩国三级日本三斤在线观看| 一区二区精品区| 成人在线免费看| 欧美福利在线播放网址导航| 中文字幕一区二| 亚洲免费一级电影| 久久99精品久久久久久久青青日本| 久久黄色片网站| 天干夜夜爽爽日日日日| 国产粉嫩一区二区三区在线观看| 中文在线综合| 成人性生交大片免费看视频在线| 欧美日本精品一区二区三区| 91精品国产九九九久久久亚洲| 91香蕉视频网址| 11024精品一区二区三区日韩| 男人资源在线播放| 亚洲国产一区二区在线观看 | av资源站一区| 亚洲成人激情在线观看| 91久久极品少妇xxxxⅹ软件 | 天天视频天天爽| 亚洲天天综合网| xx欧美xxx| 麻豆成人免费电影| 欧美性猛交一区二区三区精品| 日韩美女激情视频| 久久精品影视大全| 国产精品入口免费麻豆| sis001欧美| 亚洲男同1069视频| 免费一区二区三区在在线视频| 性高潮久久久久久久| 免费国产麻豆传| 欧美三级精品| 粉嫩av一区二区三区| 欧美在线视频免费| 在线观看日本一区二区| 99热这里只有精品在线观看| 韩日精品一区二区| 午夜视频一区二区| 91久久精品在线| 可以免费在线观看的av| 国产精品电影| 亚洲成人黄色影院| 一区二区三区免费看| 国产精品9191| 高清毛片在线观看| 亚洲一区欧美一区| 亚洲自拍偷拍一区| yjizz国产| jizz日韩| 国产精品午夜春色av| 欧美日韩一区二区三| 国产午夜福利一区二区| 国产伦理精品| 色婷婷综合久久久中文一区二区 | 精品97人妻无码中文永久在线| 美女隐私在线观看| 国产精品久久久久久久久免费相片| 免费一区二区三区| 欧美成人久久电影香蕉| 禁久久精品乱码| 91精品国产一区二区人妖| 欧美一级日本a级v片| 热久久中文字幕| 亚洲精品毛片| 国产精品丝袜在线| 青青草免费在线视频观看| 国产精品国产三级国产普通话对白 | 国产hs免费高清在线观看| 亚洲欧洲综合| 亚洲伦理中文字幕| 韩国三级hd中文字幕| gogo高清午夜人体在线| 成人av免费在线播放| 97国产精品视频人人做人人爱| 91精品人妻一区二区三区四区| 欧洲日本不卡| 国产精品久久久久无码av| 欧美日韩在线不卡| 亚洲精品一二三四| 男男gay免费网站| 亚洲高清网站| 国产精品久久久久久久久久尿 | 99精品人妻少妇一区二区| 好吊色在线观看| 日本一区二区三区视频在线看| 亚洲精品国产精品国自产在线| 在线观看黄网址| 看女生喷水的网站在线观看| 一个色综合av| 中文字幕免费高| 国产a级网站| 日本一区二区在线不卡| 精品欧美一区二区在线观看视频| 精品偷拍激情视频在线观看| 人禽交欧美网站| 国内精品久久久久影院优| 任我爽在线视频| 97电影在线| 99麻豆久久久国产精品免费| 欧美与动交zoz0z| 少妇性bbb搡bbb爽爽爽欧美| 国产麻豆视频精品| 亚洲精品欧美日韩专区| 羞羞影视羞羞在线|