javascript的==和===,以及if(xxx)總結

來源:互聯網
上載者:User

標籤:變數   tracking   object   數值   定義   size   []   var   targe   

轉載請註明 本文出自:http://blog.csdn.net/nancle

首先說==和===

  • 首先說明一個非常特殊的值NaN, typeof(Nav)得到‘number‘,可是NaN不等於不論什麼一個值(包含它本身)。推斷一個值是不是NaN僅僅能使用isNaN
    NaN == NaN //得到 falseNaN === NaN //得到falseisNaN(NaN) //得到true
  • 然後===也比較簡單:
    1. 等號兩邊類型和值都相等才返回true
      1 === 1 //得到 true1 === ‘1’//得到false
    2. 對於對象、數組、函數(三者均為對象Object的instance):僅僅有等號兩邊引用了同一個對象。才返回true。引用不同對象。即使兩個對象值相等也返回false。
      var a = {test:‘test‘};var b = {test:‘test‘};var c = a;a === b //得到falsea === c  //得到true
    3. 對於undefined和null:僅僅有兩邊同一時候為undefined或者同一時候為null時全然相等
      undefined === undefined //得到truenull === null //得到trueundefined === null //得到false
  • ==略微複雜些:
    1.  假設等號兩邊的類型和值相等則返回true
    2. 假設等號兩邊類型相等。可是值不相等,則按下面規則比較:
      • 假設一個值是數字。還有一個值是字串,把字串轉換為數字。再用轉換後的值進行比較。

        1 == ‘1‘ //得到true
      • 假設一個值為true,將它轉化為1,再進行比較。

        假設一個值為false,把它轉化為0,再進行比較。

        true == 1 //得到true0 == false// 得到true
      • 假設等號兩邊都是對象,那麼必須引用同一個對象才返回true。假設一個值是對象,還有一個值是數字或字串。將對象轉換成原始類型的值,再進行比較。能夠使用對象的toString()方法或valueOf()方法把對象轉化成原始類型的值。

        JavaScript核心語言的內部類通常先嘗試valueOf()方法轉換,再嘗試toString()方法轉換,可是對於Date類。則先運行toString()方法再運行valueOf()方法轉換。不屬於JavaScript核心語言的對象則能夠採用JavaScript實現定義的方式把自身轉換成原始數值。

        var  a = {test:‘test‘};var  b = {test:‘test‘};a.valueOf = function(){return 1};b.valueOf = function(){return 1};a == b // 返回false1 == a //返回true
      • 對於undefined和null: 等號兩邊出現隨意一個都返回true
        undefined == undefined //得到truenull == null //得到trueundefined == null //得到true

    然後說明if(xxx):

    if(xxx)事實上非常easy,它始終會把xxx的值轉換成Boolean(即true或者false);  0,‘0‘,[],null,undefined,NaN轉換成Boolean類型都為false。


    附:這裡說一個非常實用的技巧。在變數前面加兩個!! 取反符號。能夠把變數強制轉換成Boolean類型,這樣一來,!!NaN ===  !!null也得到true,奇妙吧!

    javascript的==和===,以及if(xxx)總結

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.