<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      Fork me on GitHub

      JavaScript中的 NaN 與 isNaN

      NaN

      NaN 即 Not a Number ,不是一個數字。 在 JavaScript 中,整數和浮點數都統稱為 Number 類型 。除此之外,Number 類型還有一個很特殊的值,即 NaN 。它是 Number 對象上的一個靜態屬性,可以通過 Number.NaN 來訪問 。 

      console.log(Number.NaN); // NaN

      在 ECMAScript v1 和其后的版本中,還可以用預定義的全局屬性 NaN 代替 Number.NaN 。

      console.log(NaN); // NaN

      在以下兩種場景中,可能會產生 NaN 值 。

      【1】表達式計算

      一個表達式中如果有減號 (-)、乘號 (*) 或 除號 (/) 等運算符時,JS 引擎在計算之前,會試圖將表達式的每個分項轉化為 Number 類型(使用 Number(x) 做轉換)。如果轉換失敗,表達式將返回 NaN 。

      100 - '2a' ; // NaN
      '100' / '20a'; // NaN
      '20a' * 5 ; // NaN
      undefined - 1; // NaN, Number(undefined) == NaN
      [] * 20 ; // 0, Number([]) == 0
      null - 5; // -5, Number(null) == 0 

      而 加號 (+) 不會將其兩邊的變量轉化為 Number 類型,這是因為JS表達式的執行順序是按照運算符的優先級從左到右依次進行的,如果加號 (+) 兩邊的變量都是 Number 類型時,才會做數字相加運算,如果其中有一個變量是字符串,則會將兩邊都作為字符串相加。

      5 + 4 + '6' = '96';
      1 + '2' + 3 =  '123'

      【2】類型轉換

      直接使用 parseInt,parseFloat 或 Number 將一個非數字的值轉化為數字時,表達式返回 NaN 。

      'abc' - 3   // NaN
      parseInt('abc')  // NaN
      parseFloat('abc') // NaN
      Number('abc')    // NaN

      對于 數字+字符 的值,其轉化結果會有所不同:

      Number('123abc'); // NaN
      parseInt('123abc'); // 123
      parseInt('123abc45'); // 123
      parseFloat('123.45abc');// 123.45

      Number 轉換的是整個值,而不是部分值;parseInt 和 parseFloat 只轉化第一個無效字符之前的字符串。 另外,一元加操作符也可以實現與 Number 相同的作用。 

      + '12abc'; // NaN
      + '123'; // 123
      + '123.78'; // 123.78
      + 'abc'; // NaN

      因此,當一個字符串不能被 Number、parseInt 或 parseFloat 成功轉換時,就返回 NaN,表示該字符串無法被識別為數字類型,這是一個異常狀態,并不是一個確切的值。 

      isNaN

      isNaN() 是一個全局方法,它的作用是檢查一個值是否能被 Number() 成功轉換 。 如果能轉換成功,就返回 false,否則返回 true 。

      isNaN(NaN)    // true 不能轉換
      isNaN('123')   // false 能轉換
      isNaN('abc')    // true 不能轉換
      isNaN('123ab')   // true 不能轉換
      isNaN('123.45abc') // true 不能轉換

      可以看出,isNaN() 沒有辦法判斷某個值本身是否為 NaN 。如果想要知道某個值本身是否為 NaN,可以利用 NaN 不等于自身 這一特性來判斷。

      function selfIsNaN(value){
          return value !== value
      }

      另外,ES6 在 Number 對象上也提供了 isNaN()  方法,和全局方法 isNaN() 不同的是,它用于判斷某個值本身是否為 NaN,而不需要進行類型轉換。

      Number.isNaN('123'); // false 本身不是NaN
      Number.isNaN('abc'); // false 本身不是NaN
      Number.isNaN(NaN); // true 本身是NaN

       

      原創發布 @一像素  2016 博客園 

       

      【參考資料】

      [1] 詳解 ECMAScript 數據類型

        

       

      posted @ 2016-03-16 00:27  一像素  閱讀(36192)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 嫩草成人AV影院在线观看| 成在线人永久免费视频播放| 高清性欧美暴力猛交| 久久天天躁狠狠躁夜夜躁2020| 中国孕妇变态孕交xxxx| 免费国产精品黄色一区二区| 巨爆乳中文字幕爆乳区| 好湿好紧太硬了我太爽了视频| 亚洲天堂男人影院| 亚洲日韩久热中文字幕| 无码人妻丰满熟妇区bbbbxxxx| 97一期涩涩97片久久久久久久 | 国产11一12周岁女毛片| 国产色a在线观看| 亚洲av色图一区二区三区| 日韩丝袜亚洲国产欧美一区| 国产不卡一区二区在线| 国产亚洲av产精品亚洲| 人妻激情偷乱视频一区二区三区| 一区二区中文字幕av| 亚洲码国产精品高潮在线| 亚洲老熟女一区二区三区| 最近中文字幕完整版2019| 黄色一级片一区二区三区| 久久天天躁狠狠躁夜夜躁| 久久蜜臀av一区三区| 欧美日韩精品一区二区视频| 欧美videos粗暴| 92国产精品午夜福利免费| 玩弄丰满少妇人妻视频| 酒店大战丝袜高跟鞋人妻| 亚洲天堂一区二区三区三州| 亚洲精品人成网线在播放VA | 日韩成人性视频在线观看| 久久婷婷综合色丁香五月| 国产二区三区不卡免费 | 无码av最新无码av专区| 丰满无码人妻热妇无码区| 嘉义市| 国产亚洲另类无码专区| 久久精品夜色噜噜亚洲av|