1. JavaScript
    1. ECMAScript(262)
      1. ECMAScript定義了指令碼語言的所有語法、類型、語句、關鍵字、保留字、運算子和物件等, 其他語言可以實現ECMAScript來作為功能基礎,JavaScript就是其中之一
      2. ECMAScript
        1. JavaScript
        2. ActionScript
        3. ScriptEase
    2. BOM
      1. Browser Object Model
      2. BOM提供Web開發者移動視窗、改變狀態列…一些與網頁內容無關的動作
    3. DOM
      1. Document Object Model
      2. 一種與瀏覽器、平台、語言無關的介面,DOM把整個網頁標籤轉換成節點樹架構的文件
  2. Web標準
    1. 將網頁分離為三個部份,結構、表現、行為。
      1. Structure
        1. (X)HTML
          1. 傳統HTML的缺點
          2. 維護困難
          3. 為了修改某個標記格式,需要花費很多時間,越後期的修改、維護成本越高
          4. 標記不足
          5. HTML本身標記不足,HTML本身標記都是內容服務使用,關於美工、排版根本很少或沒有支援
          6. 網頁過胖
          7. 傳統網頁除了包含HTML外,還加上CSS、JavaScript,最後還會加上動態程式語言, 除了維護困難,頁面往往過於胖大,浪費許多頻寬。
          8. 定位困難
          9. HTML在定位時就顯得捉襟見肘,過多的<table>也導致頁面的複雜和後期維護的困難
      2. Presentation
        1. CSS
      3. Behavior
        1. JavaScript
    2. 對網站瀏覽者的好處
      1. 檔案下載、頁面顯示更快
      2. 內容能被更多使用者訪問(含殘障人士)
      3. 內容能被更多設備訪問(PDA、智慧手機…)
      4. 使用者能透過CSS選擇自己介面風格
      5. 由CSS提供適合列印版本
    3. 對網站開發者的好處
      1. 更少的程式碼
      2. 更容易維護
      3. 頻寬要求更低
        1. 例如ESPN.com使用CSS改版,每天節約超過2TB的頻寬
      4. 更容易被搜尋引擎接受,及更高的排名
      5. 改版方便(結構、表現、行為分離)
      6. 提高網站易用性
        1. 美國:Section 508
        2. 台灣:無障礙空間
        3. 國際:WCAG
  3. ECMAScript語法
    1. 區分大小寫
    2. 弱類型變數
      1. 定義變數只用"var"關鍵字,並可以初始化為任意的值
    3. 每行結尾的分號可有可無
      1. 養成良好的程式設計習慣,為每一句程式結尾都加上分號
      2. 在新版Browser中,不加分號會有問題
    4. 括孤{ }用區程式碼區塊
    5. 註解
      1. //這是單行註解 /* 這是多行註解 */
  4. 變數
    1. 變數是透過var關鍵字來宣告,是記憶體裡獨一無二名稱(unique name)的存儲位置(storage location)
    2. 變數在使用之前都應宣告(雖然不宣告也能使用)
    3. 未宣告的變數,會自動建立為全域變數(在函式內也一樣),並初始化為指定的值
    4. 同一變數應該只儲存一種資料型別,建立一個有初始值的變數,是種好習慣
    5. 命名
      1. 字首必是英文字母、底線(_)或$符號
      2. 其他可以是英文字母、底線(_)、數字、$符號
      3. 變數不能是關鍵字或保留字
      4. 命名規則
        1. Camel
          1. 首字母小寫,其他單字字首大寫
          2. studentName, classNumber
          3. 用於變數和函式
        2. Pascal
          1. 首字母大寫
          2. FirstName, LastName
          3. 用於物件
        3. 匈牙利
          1. 改良Pascal,在變數前加上(一個或一組)小寫字母來說明變數的型別
          2. i代表Integer,s代表String int代表Integer,str代表String
          3. 匈牙利命名法
          4. 陣列
          5. aStudents
          6. a / arr
          7. 布林
          8. b / bln
          9. bSex
          10. 浮點數
          11. f
          12. fTax
          13. 函數
          14. fn
          15. fnSwap
          16. 整數
          17. i / int
          18. iAge
          19. 物件
          20. o / obj
          21. oCar
          22. 正規式
          23. re / reg
          24. reID
          25. 字串
          26. s / str
          27. sName
    6. 常數
      1. 常數用來建立一個不會改變的值
        1. 除了修改JavaScript原始碼之外
      2. 常數透過const關鍵字來宣告
      3. 常數習慣以「全大寫字母」來命名
        1. const TAXRATE = .5;
      4. const關鍵字最近才加入JavaScript,使用前請多檢查
        1. IE到目前都還不支援(IE8)
    7. 初始化
      1. 初始化背後的概念,在於避免存取沒有存入值的變數,
      2. 如果宣告時還不知變數值,可先使用「什麼都沒有」來當值, 減低存取未初始化變數的風險
        1. "",空字串
          1. var name="";
        2. 0,數值
          1. var price=0;
        3. false,希林
          1. var Select=false;
    8. 變數範圍(scope)
      1. scope掌控變數的生命週期,還有程式碼是否可以存取變數
      2. 區域變數(Local Variables)
        1. 在函數內宣告的變數,存在於函式執行時,只能在函式內的程式區塊使用
      3. 全域變數(Global Variables)
        1. 變數在函數外宣告,整個JavaScript程式的函數和程式碼都可以存取
  5. 資料型別(data type)
    1. data type
      1. 未定義(undefined)
        1. 某段資料未初始化,或沒有值
      2. 空(null)
      3. 布林(boolean)
        1. true(成立)與false(不成立)
      4. 字串(string)
        1. 文字(text)資料只是一串字元,通常出現在單/雙引號之間
      5. 數值(number)
        1. 數字資料
      6. 物件(object)
      7. 參考(reference)
      8. 列表(list)
      9. 完成(completion)
      10. JavaScript基本資料型別
      11. 為JavaScript執行中間結果的資料型別,不能在程式碼中使用
    2. JavaScript會在你設定資料時,自動判定型別,自動指定, 我們無法在設定變數時設定資料型別
  6. 關鍵字
    1. Keyword
      1. break
        1. case
        2. catch
        3. continue
        4. default
      2. delete
        1. do
        2. else
        3. finally
        4. for
      3. function
        1. if
        2. in
        3. instanceof
        4. new
      4. return
        1. switch
        2. this
        3. throw
        4. try
      5. typeof
        1. var
        2. void
        3. while
        4. with
  7. 保留字
    1. 保留字
      1. abstract
        1. boolean
        2. byte
        3. char
        4. class
      2. const
        1. debugger
        2. double
        3. enum
        4. export
      3. extends
        1. final
        2. float
        3. goto
        4. implements
      4. import
        1. int
        2. interface
        3. long
        4. native
      5. package
        1. private
        2. protected
        3. public
        4. short
      6. static
        1. super
        2. synchronized
        3. throws
        4. transient
      7. volatile
    2. 保留字一般較少使用,在物件導向程式設計中使用率比較高
  8. 比較符號
    1. 比較符號
      1. ==
        1. 等於
      2. !=
        1. 不等於
      3. >
        1. 大於
      4. <
        1. 小於
      5. >=
        1. 大於等於
      6. <=
        1. 小於等於
      7. ===
        1. 絕對等於
      8. !==
        1. 絕對不等於
    2. 雙等號運算子(等於)會進行型態強制轉換,假如比較的資料型態不一樣, 有時結果會相當有趣:1 == true會得true。 要避免型態強制轉換,要用三等號運算子(絕對等於): 1 === true會得false。 還有一個!== (絕對不等於)運算子。
  9. 邏輯符號
    1. 邏輯符號
      1. &&
        1. And運算
      2. ||
        1. Or運算
      3. !
        1. Not運算