2016年2月16日 星期二

Javascript的資料型態

以下說明建議安裝node.js環境,實際操作會較有印象。
  • 資料型態
    • 參考:http://www.w3schools.com/js/js_datatypes.asp
      • String, Number, Boolean, Array, Object.
      • null
      • undefined
    • 測試運算
      • typeof:用來測試物件型態,回傳值是字串
      > typeof 1 //Number
      'number'
      > typeof 'abc' //String
      'string'
      > typeof true //Boolean
      'boolean'
      > typeof {} //Object
      'object'
      > typeof undefined //undefined
      'undefined'
      > typeof null //null
      'object'
      > typeof function() {}; //Function
      'function'
      
      • instanceof:用來檢視某個物件是哪個型態的實例
      > var x = {};
      undefined
      > x instanceof Object;
      true
      > [] instanceof Object;
      true
      > [] instanceof Boolean;
      false

    1. Number
      • 沒有整數與浮點數的差別
      • 都是IEEE754 64位元浮點數
        • 最小值Number.MIN_VALUE
        • 最大值Numner.MAX_VALUE
      > Number.MIN_VALUE
      5e-324
      > Number.MIN_SAFE_INTEGER
      -9007199254740991
      > Number.MAX_VALUE
      1.7976931348623157e+308
      > Number.MAX_SAFE_INTEGER
      9007199254740991
      • 若使用位元運算(如:>>,<<等),結果會是32位元有號整數。
      • 不建議使用位元運算
      • 宣告數值時預設為10進位整數
        • 也可0開頭表示8進位整數
        • 或是0x開頭表示16進位整數
        • 嚴格模式下不允許使用8進位
      > 100
      100
      > 0100
      64
      > 0xFF
      255
      • 可用科學記號表示浮點數
      > 1.234
      1.234
      > 1.234E10
      12340000000
      • 數值的特殊值
        • 無限大
          • 正無限大:Infinity
          • 負無限大:-Infinity
      > Infinity
      Infinity
      > -Infinity
      -Infinity
      > Number.POSITIVE_INFINITY
      Infinity
      > Number.NEGATIVE_INFINITY
      -Infinity
      • 非數值(Not a Number)
        • 表示為NaN,也可用Number.NaN取得
        • NaN不等於任何值,NaN也不等於NaN
          • 故無法直接測試NaN === NaN
          • 有isNaN函式,但無法自動轉型成數字得值,都會讓isNaN的結果為true,故非絕對準確。
          • 但可利用NaN是JavaScript中唯一不等於自身的值之特性改採用 value !== value來判別。
          • 更特殊的是,typeof NaN的結果是number
      > var a = 1/'a'
      undefined
      > a
      NaN
      > isNaN(a)
      true
      > isNaN('abcdefg')
      true
      > isNaN(undefined)
      true
      > function isRealNaN(value) {
      ... return value !== value;
      ... }
      undefined
      > isRealNaN(a)
      true
      > isRealNaN('abcdefg')
      false
      > isRealNaN(undefined)
      false
      > typeof NaN
      'number'
    2. String
      • 可使用單引號或雙引號來包著一串文字,都是字串
      • JavaScript中沒有字元
      • 習慣在JavaScript程式中使用單引號,將雙引號保留在HTML中使用。
      > typeof 'A'
      'string'
      > typeof "A"
      'string'
      > var html = '<input type="text" value="123">';
      undefined
      > html
      '<input type="text" value="123">'
    3. Boolean
      • 只有true與false
      > typeof true
      'boolean'
      > typeof false
      'boolean'
    4. Array
      • 是物件(Object)
      • 以[ ]包覆並以逗點分隔的一組物件
      > typeof new Array();
      'object'
      > var arr = ['a',1,true]
      undefined
      > arr
      [ 'a', 1, true ]
      > typeof arr
      'object'
    5. Object
      • 即是指物件(Object),除了基本資料型態外都是Object的實例。
      • 以{}產生物件,其屬性是以逗點分隔之一組name:value pair
      • 屬性可以用.來存取,也可以['name']
      > var man = {name:'Peter',age:23};
      undefined
      > man
      { name: 'Peter', age: 23 }
      > man.age
      23
      > man['age']
      23
      > typeof man;
      'object'
      > typeof new Object()
      'object'
      > typeof {}
      'object'
      > typeof []
      'object'
    6. null
      • 表示沒有任何東西
      • 不參考至任何物件,可將變數設為null
      • 可用===測試變數是否為null
      • 特殊行為:
        • 對null做typeof會是object
        • 對null做instanceof會是false
      > var x = null;
      undefined
      > x === null
      true
      > typeof null
      'object'
      > null instanceof Object
      false
    7. undefined
      • 欲取得沒有指定任何值的變數或屬性,會出現undefined
      • 對undefined做typeof會是undefined
      • undefined會等於undefined
      > var x = null
      undefined
      > var y
      undefined
      > x
      null
      > y
      undefined
      > undefined === undefined
      true

    沒有留言:

    張貼留言