92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

由‘==’和‘===’引出的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.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
亚洲free性xxxx护士hd| 亚洲第一区中文字幕| 91国在线精品国内播放| 亚洲国产成人精品久久久国产成人一区| 日韩久久午夜影院| 一二美女精品欧洲| 性欧美在线看片a免费观看| 日韩视频免费大全中文字幕| 91精品国产成人| 中文.日本.精品| 精品伊人久久97| 亚洲免费电影一区| 日韩精品亚洲精品| 亚洲一区二区三区sesese| 亚洲欧美在线看| 国产一区二区美女视频| 国产综合在线观看视频| 91超碰中文字幕久久精品| 九九精品视频在线观看| 中文字幕亚洲无线码在线一区| 欧美成人黄色小视频| 欧美午夜久久久| 久久国产精品久久久久久| 亚洲人成网站999久久久综合| 高清一区二区三区日本久| 国产成人精品一区二区三区| 中文字幕精品影院| 色yeye香蕉凹凸一区二区av| 日本欧美黄网站| 中国日韩欧美久久久久久久久| 久久综合久久八八| 日韩电视剧在线观看免费网站| 国产精品第2页| 日韩av不卡在线| 中日韩美女免费视频网站在线观看| 亚洲国产一区二区三区在线观看| 国产97在线视频| 精品美女久久久久久免费| 亚洲成人激情图| 亚洲男人天堂网| 中文字幕在线看视频国产欧美| 国产成+人+综合+亚洲欧美丁香花| 成人深夜直播免费观看| 麻豆国产精品va在线观看不卡| 欧美高跟鞋交xxxxhd| 在线观看日韩av| 国产欧美日韩综合精品| 日韩欧美在线第一页| 亚洲成色777777在线观看影院| 神马久久桃色视频| 国产精品视频xxxx| 日韩av网址在线观看| 亚洲天堂男人天堂| 欧美激情视频网站| 欧美xxxx做受欧美| 国产精品视频yy9099| 亚洲欧美日韩在线高清直播| 成人免费视频97| 美女扒开尿口让男人操亚洲视频网站| 午夜精品福利视频| 91亚洲永久免费精品| 久久久影视精品| 欧美日韩亚洲视频| 国产精品无av码在线观看| 欧美成人免费网| 91九色国产社区在线观看| 欧美乱大交做爰xxxⅹ性3| 国产精品国内视频| 国产精品亚洲美女av网站| 国产91色在线| 91精品国产高清自在线| 欧美xxxx18国产| 日韩美女视频中文字幕| 国产精品高精视频免费| 国内伊人久久久久久网站视频| 欧美夫妻性视频| 亚洲国产精品一区二区三区| 国产欧美婷婷中文| 欧美电影免费观看网站| 97av在线播放| 91po在线观看91精品国产性色| 国产精品高潮呻吟久久av无限| 91精品久久久久久久久久久久久| 亚洲区免费影片| 久久天天躁日日躁| 性亚洲最疯狂xxxx高清| 国产精品久久电影观看| 日韩精品中文字幕久久臀| 91精品国产91久久久久福利| 亚洲精品一区久久久久久| 日韩欧美在线中文字幕| 日韩天堂在线视频| 亚洲黄在线观看| 98精品国产自产在线观看| 国内精品视频在线| 国产欧美一区二区| 成人久久久久爱| 中文综合在线观看| 欧美视频在线免费| 亚洲白虎美女被爆操| 欧美视频在线观看免费网址| 亚洲欧美日韩国产中文专区| 欧美亚洲国产精品| 中文字幕久热精品在线视频| 精品视频一区在线视频| 欧美午夜精品久久久久久浪潮| 91av在线免费观看视频| 色yeye香蕉凹凸一区二区av| 国产成人激情视频| 久久久久久国产三级电影| 亚洲专区在线视频| 欧美成人剧情片在线观看| 日韩精品中文字幕在线| 亚洲精品天天看| 精品视频偷偷看在线观看| 午夜精品视频在线| 日韩精品日韩在线观看| 日韩免费在线播放| 亚洲人成在线观| 亚洲女同性videos| 91在线色戒在线| 最近免费中文字幕视频2019| 久久精品国产欧美亚洲人人爽| 国产香蕉一区二区三区在线视频| 亚洲精品动漫100p| 国产精品视频999| 97视频在线观看成人| 亚洲成人xxx| 日韩精品中文字幕久久臀| 日产精品久久久一区二区福利| 国产日韩专区在线| 国内精品免费午夜毛片| 国产亚洲免费的视频看| 国产精品九九九| 性色av香蕉一区二区| 亚洲精品小视频在线观看| 久久高清视频免费| 国产精品久久久久久久电影| 国产精品女主播| 成人国产精品久久久| 久久人体大胆视频| 精品福利樱桃av导航| 国产精品视频yy9099| 成人在线观看视频网站| 亚洲影院色在线观看免费| 日韩精品视频中文在线观看| 国产亚洲精品久久| 精品动漫一区二区三区| 欧美大尺度在线观看| 亚洲成人动漫在线播放| 91精品久久久久久久久久另类| 热99精品只有里视频精品| 一本一本久久a久久精品牛牛影视| 久久久久久伊人| 久久久国产影院| 国产伊人精品在线| 午夜精品在线视频| 亚洲四色影视在线观看| 91高清在线免费观看| 国产在线精品自拍| 色小说视频一区| 国产精品18久久久久久首页狼| 亚洲精品理论电影| 亚洲成人精品久久|