99久久精品国产片-99久久精品国产免费-99久久精品国产麻豆-99久久精品国产国产毛片-99久久精品国产高清一区二区-99久久精品费精品国产一区二区

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

2018-6-1    高勁

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

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

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

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

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

       JS基礎中,我們學習到咱們的JS中一共有六種數(shù)據(jù)類型,分為基本數(shù)據(jù)類型(簡單數(shù)據(jù)類型)和引用數(shù)據(jù)類型(復雜數(shù)據(jù)類型),不同類型的值進行比較的時候,存在隱式轉換的問題,咱們通過‘==’來驗證一下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數(shù)據(jù)類型中一個特殊情況,如果‘==’兩邊同為Number數(shù)據(jù)類型的數(shù)字,很直觀的可以看出值是否相同一眼就可以看出結果,但是作為Number類型的特殊情況,NaN在進行比較的時候,也會有特殊的結果:如果 x 或 y 中有一個為 NaN,則返回 false;

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

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

      在上述例子中,引出了一個null,null是一個簡單數(shù)據(jù)類型,它的意義就是一個空應用,但是你如果通過console.log(typeof null) 來打印結果的時候卻發(fā)現(xiàn),結果竟然是object?此時你可能會懷疑人生,然后瘋狂的翻閱之前學習的資料,因為object明明是一個復雜數(shù)據(jù)類型,怎么會在判斷null這個簡單數(shù)據(jù)類型的類型時打印出來呢?其實,這個問題屬于一個歷史問題。咱們學習的JS在發(fā)展過程中是通過ECMAScript來確定規(guī)范的,每年都會有新的規(guī)定和規(guī)范提出,在JS的發(fā)展過程中,null一開始的作用就是用來指向一個空地址,讓開發(fā)者在創(chuàng)建數(shù)據(jù)的時候,先用null賦值給還未給值的對象用于標準初始化。但是其實咱們開發(fā)過程中很少用到,但是這個仍作為規(guī)范留了下來。又因為typeof是根據(jù)數(shù)據(jù)的前幾位判斷數(shù)據(jù)類型的,null相當于空指針,前幾位是地址的格式,所以判斷結果就為object。又因為undefined值是派生自null值的,因此ECMA-262規(guī)定對他們的相等測試要返回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 函數(shù)轉化為 Number 類型再進行比較;

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

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

日歷

鏈接

個人資料

藍藍設計的小編 http://www.lapeinture.cn

存檔

一级毛片视频免费| 色综合久久久久综合体桃花网| 精品视频一区二区三区免费| 精品久久久久久中文| 成人免费观看的视频黄页| 亚洲第一页色| 久久99中文字幕| 日韩中文字幕在线观看视频| 免费国产在线视频| 国产91精品系列在线观看| 久久成人综合网| 99色视频| 日本免费看视频| 欧美国产日韩在线| 黄色免费网站在线| 一级毛片视频免费| 台湾毛片| 九九免费精品视频| 精品视频在线看| 日日日夜夜操| 青青青草视频在线观看| 国产福利免费视频| 国产伦精品一区二区三区无广告 | 久久国产一区二区| a级精品九九九大片免费看| a级精品九九九大片免费看| 韩国三级视频网站| 可以免费看毛片的网站| 欧美激情在线精品video| 久久99欧美| 日韩免费在线观看视频| 亚洲第一页乱| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 美女免费精品高清毛片在线视 | 日韩欧美一及在线播放| 免费毛片基地| 91麻豆精品国产自产在线观看一区| 成人影视在线播放| 国产高清在线精品一区a| 午夜欧美福利| 欧美大片毛片aaa免费看| 日本伦理片网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久国产影视免费精品| 国产91精品系列在线观看| 久久久成人影院| 欧美另类videosbestsex视频| 欧美爱爱网| 欧美大片aaaa一级毛片| 精品国产三级a∨在线观看| 国产高清视频免费| 国产网站免费视频| 99色视频| 中文字幕一区二区三区精彩视频| 久久99中文字幕久久| 免费毛片播放| 999久久久免费精品国产牛牛| 日韩在线观看免费| 国产精品123| 精品在线观看国产| 韩国三级视频网站| 午夜欧美福利| 人人干人人草| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产成人精品影视| 国产视频久久久| 国产成人精品综合久久久| 99久久视频| 国产伦久视频免费观看 视频| 黄色福利| 国产亚洲精品aaa大片| 台湾毛片| 久久国产精品自线拍免费| 国产不卡在线看| 国产a毛片| 欧美a免费| 亚洲 男人 天堂| 韩国三级一区| 欧美日本免费| 成人影院久久久久久影院| 黄视频网站免费| 精品久久久久久综合网| 国产极品白嫩美女在线观看看| 四虎影视久久| 天天做日日爱夜夜爽| 亚洲天堂免费观看| 日韩中文字幕一区二区不卡| 韩国毛片基地| 国产成人精品影视| 九九九国产| 亚洲精品久久玖玖玖玖| 成人免费高清视频| 精品国产一区二区三区精东影业 | 免费国产在线观看不卡| 久久久久久久久综合影视网| 久久99中文字幕| 国产视频一区在线| 国产高清视频免费| 成人a大片高清在线观看| 国产成+人+综合+亚洲不卡| 欧美1区| 精品视频在线观看一区二区三区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 黄色免费三级| 日韩av东京社区男人的天堂| 国产亚洲免费观看| 九九久久国产精品大片| 国产伦精品一区二区三区在线观看| 精品视频在线观看一区二区三区| 欧美另类videosbestsex视频| 日韩免费在线视频| 尤物视频网站在线| 麻豆网站在线看| 欧美一级视频免费| 国产亚洲精品aaa大片| 九九久久国产精品| 成人a级高清视频在线观看| 精品国产三级a| 欧美激情影院| 高清一级毛片一本到免费观看| 美女被草网站| 可以免费看污视频的网站| 亚洲天堂免费观看| 亚洲天堂在线播放| 日韩专区一区| 韩国毛片| 99热精品一区| 91麻豆高清国产在线播放| 欧美一级视频高清片| 日日日夜夜操| 亚洲女初尝黑人巨高清在线观看| 一级毛片视频播放| 日本在线不卡视频| 久久久久久久久综合影视网| 精品国产三级a| 国产精品自拍在线| 成人a级高清视频在线观看| 一 级 黄 中国色 片| 日本伦理黄色大片在线观看网站| 亚洲第一色在线| 国产一级强片在线观看| 欧美激情一区二区三区在线 | 精品视频一区二区三区| 国产综合91天堂亚洲国产| 国产91素人搭讪系列天堂| 青青久久网| 可以免费看毛片的网站| 九九九网站| 日韩免费在线视频| 亚洲爆爽| 亚飞与亚基在线观看| 在线观看成人网 | 日本在线不卡视频| 免费国产一级特黄aa大片在线| 免费国产在线视频| 日韩欧美一二三区| 日韩欧美一二三区| 可以在线看黄的网站| 九九久久国产精品| 999久久久免费精品国产牛牛| 韩国三级视频在线观看| 久久国产精品只做精品| 四虎论坛| 美女免费精品高清毛片在线视 | 国产亚洲精品成人a在线| 日韩免费在线视频| 99热精品在线| 免费国产在线观看| 香蕉视频三级| 久久久久久久网| 午夜久久网| 天天做日日爱| 亚洲 激情| 精品国产一区二区三区久 | 色综合久久天天综合| 九九九网站| 九九精品影院| 九九热国产视频| 天天做日日爱夜夜爽| 日韩在线观看免费| 尤物视频网站在线观看| 久久99中文字幕| 天堂网中文字幕| 天天做日日爱| 日本特黄一级| 日韩一级黄色大片| 成人免费一级纶理片| 一级毛片看真人在线视频| 亚洲精品久久玖玖玖玖| 免费一级片在线| 欧美大片一区| 天堂网中文字幕| 欧美一级视频免费| 尤物视频网站在线观看| 精品视频免费在线| 精品视频在线看| 日本在线www| 欧美日本免费| 欧美大片一区| 日韩一级黄色|