嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

由‘==’和‘===’引出的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://m.sdgs6788.com

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 国产精品私房写真福利视频| 国产一区日韩欧美| 欧美性大战久久久久| 国内不卡一区二区三区| 亚洲欧美一区二区精品久久久| 欧美成人综合网站| 久久久精品国产99久久精品芒果| 国产欧美日韩精品一区| 亚洲欧美综合| 亚洲欧美日韩在线不卡| 国产精品专区一| 欧美一区二区啪啪| 亚洲欧美视频| 国产伪娘ts一区| 久久久久一本一区二区青青蜜月| 欧美伊人久久久久久午夜久久久久 | 久久久精品性| 久久精品国内一区二区三区| 国产视频一区免费看| 久久精品国产综合| 欧美主播一区二区三区| 伊人色综合久久天天| 欧美激情黄色片| 欧美精品一区二区三区在线播放| 99天天综合性| 亚洲免费在线视频一区 二区| 国产精品免费久久久久久| 欧美一区二区日韩| 久久人人97超碰国产公开结果| 91久久精品一区二区别| 亚洲精品国产精品国自产观看| 欧美第一黄色网| 亚洲在线网站| 久久精品视频在线| 99视频在线观看一区三区| 亚洲一二三区在线| 在线播放日韩专区| 日韩视频一区二区三区在线播放免费观看 | 亚洲国产精品传媒在线观看 | 欧美在线视频免费| 亚洲国产mv| 中国亚洲黄色| 依依成人综合视频| 一本综合精品| 在线观看欧美日本| 一区二区三区蜜桃网| 红桃视频欧美| 在线一区二区视频| 亚洲观看高清完整版在线观看| 一本久久知道综合久久| 在线精品国产欧美| 亚洲摸下面视频| 亚洲免费观看| 久久精品国产99精品国产亚洲性色 | 欧美日韩国产不卡在线看| 性色av一区二区三区红粉影视| 老司机免费视频一区二区| 亚洲一线二线三线久久久| 久久精品一区二区三区不卡| 亚洲自拍偷拍福利| 欧美黄色aaaa| 欧美福利视频在线| 国产亚洲欧美aaaa| 中文国产成人精品久久一| 亚洲欧洲视频| 久久先锋资源| 久久夜色精品国产噜噜av| 国产精品捆绑调教| 日韩小视频在线观看| 最近看过的日韩成人| 久久漫画官网| 久久天堂成人| 国内精品久久久久影院优| 亚洲免费影视| 午夜视频在线观看一区二区三区| 欧美日韩免费观看一区三区| 亚洲高清成人| 亚洲欧洲日产国码二区| 蜜臀a∨国产成人精品| 麻豆精品在线观看| 激情丁香综合| 久久久噜久噜久久综合| 美女网站久久| 亚洲激情中文1区| 美女啪啪无遮挡免费久久网站| 老司机免费视频一区二区三区| 国产一区欧美日韩| 久久久久久久一区| 欧美xxxx在线观看| 亚洲片在线观看| 欧美剧在线观看| 日韩一区二区电影网| 亚洲午夜免费视频| 国产精品乱码妇女bbbb| 麻豆久久久9性大片| 激情成人av| 你懂的视频一区二区| 亚洲激情视频网| 一区二区三区欧美在线| 国产精品成人在线观看| 亚洲综合另类| 久久伊伊香蕉| 亚洲精品在线电影| 欧美日韩午夜视频在线观看| 亚洲午夜精品久久久久久浪潮| 亚洲欧美制服另类日韩| 国产一区二区丝袜高跟鞋图片| 久久久福利视频| 亚洲国产精品va在线观看黑人| 日韩午夜三级在线| 国产精品久久久久久久久久尿 | 国产精品久久久久一区二区三区| 亚洲视频在线免费观看| 欧美在线免费观看| 亚洲第一在线综合在线| 欧美日本不卡| 午夜视频在线观看一区二区三区| 老司机67194精品线观看| 亚洲精品网址在线观看| 国产精品久久久久久久久免费樱桃| 欧美一级成年大片在线观看| 蜜臀久久99精品久久久画质超高清 | 亚洲免费在线视频| 国内成人自拍视频| 欧美日韩国产黄| 久久av红桃一区二区小说| 亚洲激情自拍| 久久久综合香蕉尹人综合网| 日韩视频亚洲视频| 国产一区二区三区免费不卡| 欧美激情在线播放| 欧美在线观看日本一区| aa级大片欧美三级| 男男成人高潮片免费网站| 亚洲欧美久久久| 亚洲久久在线| 在线欧美电影| 国产一区二区精品久久99| 欧美色另类天堂2015| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲欧美一区二区原创| 亚洲精品日本| 欧美国产大片| 久久国产一区二区| 亚洲在线成人精品| 99亚洲精品| 亚洲美女区一区| 亚洲高清免费| 一区二区三区在线观看国产| 国产精品色午夜在线观看| 欧美另类久久久品| 久久影视精品| 久久久91精品国产一区二区精品| av成人手机在线| 91久久久一线二线三线品牌| 老司机午夜免费精品视频| 久久国产精品久久久久久| 亚洲淫性视频| 亚洲午夜激情网站| 一本久久综合亚洲鲁鲁| 亚洲破处大片| 亚洲精品久久久蜜桃| 悠悠资源网亚洲青| 狠狠色综合播放一区二区| 国产在线视频欧美| 国产婷婷色一区二区三区| 国产欧美韩日| 久热精品视频在线免费观看| 久久精品首页| 久久一区二区三区超碰国产精品| 欧美在线短视频| 久久xxxx精品视频| 久久爱www久久做| 久久精品国产免费观看| 久久精品国产99精品国产亚洲性色| 亚洲欧美日韩国产中文| 亚洲欧美日产图| 久久成人人人人精品欧| 久久超碰97人人做人人爱| 欧美在线看片| 久久久五月天| 欧美高清日韩| 欧美网站大全在线观看| 国产精品久久久久天堂| 国产午夜精品一区二区三区视频| 国产精品免费在线| 国产亚洲精品久久飘花| 激情小说亚洲一区| 亚洲国产一区二区三区在线播| 亚洲精品日韩在线| 亚洲先锋成人| 久久久国产精品一区二区中文| 久久久亚洲午夜电影| 牛人盗摄一区二区三区视频| 欧美成人午夜影院| 亚洲免费精品| 久久精品国产99| 欧美啪啪成人vr| 国产欧美va欧美va香蕉在| 樱桃国产成人精品视频|