JavaScript 資料型態
  1. 基本型態
    1. 字串(string)
    2. 範例:
      x="123";
      a="1";b="2";
      var t="hello~";
      let t="hello~";
      string u="t1"; <== 錯誤宣告方式 

    3. 數字(number ) 
    4. 範例:
      x=123;
      a=1.45;b=2.3*10e5;
      var t=78.2;
      let t=78.2;
      var ua=0b011101;
      var ub=0O1101;
      var uc=01101;  <==不建議如此宣告。(ES2015 模式不允許)
      var ud=0xfc;
      a = 312_45.819_4;  <==新通過以底線表示數字的逗點,增加可讀性。
      number v=72.9; <== 錯誤宣告方式

    5. 布林(boolean)

    6. 範例:
      a=false;b=true;
      var t=true;
      let t=true;
      var t="true";
      boolean u=true; <== 錯誤宣告方式
      a=Ture;b=False;c=TRUE;d=FALSE; <== 都是錯誤宣告方式

    7. 符號(symbol)
      • 獨一無二的資料
      • 只能透過 Symbol() 建構,無須 new
      • 可以透過 for 方法,建立相同 symbol
      • 可以透過 keyFor 方法,找到已建立的 symbol

      範例:
      a = Symbol("x");
      var b=Symbol("x");
      let c=Symbol("x");
      d = Symbol(1);
      k = Symbol(x);<==這是常見錯誤。x 被認定是變數名,非資料。
      a = Symbol("xx");b = Symbol("xx");
      a = Symbol("xx");b = a;
      a = Symbol.for("xx");b=symbol.for("xx");
      a = Symbol("xx");<==這是常見錯誤。不是 for 建立的 Symboy,keyFor 找不到 。
      a = Symbol.for("xx");

  2. 複雜型態
    1. 日期、時間
      1. 宣告方式
      2. a = new Date(); //取得目前日期與時間
        傳入整數,會以 1970 年 1 月 1 日 8 點為起點,開始以毫秒為單位做位移。
        a = new Date(0);
        b = new Date(2000);
        c = new Date(-1000);

        a = new Date("2032/7/25/ 18:25"); //使用字串方式設定
        a = new Date(2032, 7, 25, 13, 41, 0, 0); //年,[月[,日[,時[,分[,秒[,毫秒]]]]]]
      3. 資料表示方式
      4. 月份定義
        名 稱說 明
        'January'1 月
        'February'2 月
        'March'3 月
        'April'4 月
        'May'5 月
        'June'6 月
        'July'7 月
        'August'8 月
        'September'9 月
        'October'10 月
        'November'11 月
        'December'12 月

        星期定義
        monthNamesEn 的名稱monthNamesZh 的名稱
        'January'一月
        'February'二月
        'March'三月
        'April'四月
        'May'五月
        'June'六月
        'July'七月
        'August'八月
        'September'九月
        'October'十月
        'November'十一月
        'December'十二月

      5. 方法成員
      6. 名 稱說 明測 試
        時間日期取得
        getFullYear()取得 西元年 (四位數字)
        getMonth()取得 月 (範圍為 0-11)
        getDay()取得 日 (範圍為 1-31)
        getDate()取得 星期 (範圍為 0-6)
        getHours()取得 時 (範圍為 0-23)
        getMinutes()取得 分 (範圍為 0-59)
        getSeconds()取得 秒 (範圍為 0-59)
        getMilliseconds()取得 豪秒 (範圍為 0-999)
        getTime()取得從 1970-01-01 00:00:00 UTC 開始累計的毫秒數
        名 稱說 明測 試
        時間日期設定
        時間日期:
        setFullYear()設定 西元年 (四位數字) 
        setMonth()設定 月 (範圍為 0-11)  
        setDay()設定 日 (範圍為 1-31) 
        setDate()星期 (範圍為 0-6)  執行無效果
        setHours()設定 時 (範圍為 0-23) 
        setMinutes()設定 分 (範圍為 0-59) 
        setSeconds()設定 秒 (範圍為 0-59) 
        setMilliseconds()設定 豪秒 (範圍為 0-999) 
        setTime()設定從 1970-01-01 00:00:00 UTC
        位移的毫秒數 


    2. 布林(boolean)
  3. 特殊型態
    1. 無限大 ∞(number)
    2. 範例:
      var a = Infinity;
      var b = -Infinity;
      var c = Number.POSITIVE_INFINITY;
      var d = Number.NEGATIVE_INFINITY;
      var e = 1/0;
      var f = -1/0;
    3. 未定義 (undefined)
    4. 範例:
      var a;
      let b;
      var c = undefined;
                  <== 這會出現編譯錯誤,不是把 d 變成資料 undefined。
                不存在 與 存在且未定義 (undefined) 兩者差別很大。
    5. 空(null)
    6. var a = null;
      null == undefined (false)
      null === undefined (true)
      var a = null;
    7. 非數字(NaN)
    8. 範例:
      NaN <==雖然說非數字,但是型態還是 Number。
      var a=NaN;
      NaN==NaN
      這邏輯很奇怪 "自己不等於自己",但細想,不是數字,有很多種狀況,可能是字串或是布林... 因此,字串不等於布林,就很正常了。
      var a="1",b="A" <==以為會相等,但其實是錯誤。
      由上可知,判斷 NaN 不能用 NaN 判斷,必須使用 isNaN()。
      var a="1";
      var b=NaN;