1. JavaScript 起步走
• 學習目標
– 認識JavaScript發展過程
– 瞭解ECMAScript規範
– 認識TC39提案
– 準備JavaScript環境
2
JavaScript 的發展
• JavaScript創建者Brendan Eich
• Netscape Communications最初是希望能
將Scheme語言嵌入到Navigator
• 與Sun Microsystems已經在合作,希望能
在Navigator中支援Java,以在Web技術及
平臺上與微軟競爭
3
• Brendan Eich在《Effective JavaScript》前
言中這麼描述:
1995年5月在管理階層協迫性且互相衝突的命令:
「讓它看起來像 Java」、「讓初學者容易上手」、
「讓它能控制 Netscape 瀏覽器中幾乎所有的東
西」之下,我在十天內建立了 JavaScript。
4
不是 Java
• JavaScript一開始命名為Mocha
• 1995年9月Navigator 2.0的Beta版改名為
LiveScript
• 為了行銷這門語言,1995年12月被改名為
JavaScript
• JavaScript與Java之間,在風格或是典範根
本上是兩種完全不同的語言
5
JScript
• 1996 年 8 月在其Internet Explorer 3.0瀏
覽器中,推出了與JavaScript語法上極為類
似的腳本語言
• 不想與Sun處理商標問題,這門語言被命名
為JScript
6
ECMA-262 第三版
• Netscape於1996年11月正式向ECMA提交
語言規範
• ECMA-262於1997 年 6 月正式釋出首個版
本,亦被稱為ECMAScript
• JavaScript成為實現ECMAScript的語言
• JScript或後來的TypeScript等語言,也實
現了ECMAScript規範
7
• 1999年12月發佈的ECMA-262第三版,簡
稱ES3
• 直到下一個規範版本發佈,中間耗費了十
年之久的時間
• 在多方政治角力之後,原本應該是下個版
本的ES4被否決了
• 部份針對ES3缺失進行改進的特性,原預計
被發佈為ES3.1,後來在2009年12月重新
命名為ES5
8
ES5 到 ES6
• ES5釐清了ES3中許多模糊不清的規範,重
大特性之一是增加嚴格模式(Strict mode)
• 其他特性如設值(Setter)、取值(Getter)
函式的支援、更多的物件屬性設置,JSON
的支援也是ES5的重要規範之一
• ES6規範於2015年6月正式釋出,並希望之
後以年份來區分版本,因此又稱
ECMAScript 2015
9
認識 TC39 提案
• 從ES6之後,採頻繁、每年6月釋出新版本
的方式,令新版本的發佈常態化,新版本
內容僅包含當年已完成的新特性
• ECMAScript proposals
• TC39是負責ECMAScript規範的技術委員會
10
The TC39 Process
• 0:稻草人(Strawperson)
• 1:提案(Proposal)
• 2:草案(Draft)
• 3:侯選(Candidate)
• 4:完成(Finished)
11
12https://node.green
13https://github.com/williamkapke/node-compat-table
• 幾乎現有的常青(Even green)瀏覽器都
支援ES6
• 建議別再考慮支援Internet Explorer
• 至少以常青瀏覽器為目標環境並使用ES6,
或者在必須考量IE11的情況下使用ES5
14
JavaScript 引擎
• V8
– Google開發的開放原始碼JavaScript引擎
– 用於Google Chrome及Chromium,也是
Node.js使用的JavaScript引擎
• SpiderMonkey
– 早期在Netscape中使用的JavaScript引擎
– 由Mozilla Foundation維護,目前用於Firefox
瀏覽器
15
• JavaScriptCore
– 從KJS 與PCRE regular expression程式庫而來
– 使用於Apple的Safari等以WebKit作為呈現引
擎的瀏覽器中
• Chakra
– Internet Explorer使用的JavaScript引擎,本來
也使用於Edge瀏覽器
– 2018年底,Edge開始使用V8作為JavaScript
引擎,IE11則繼續使用Chakra
16
• Rhino
• QuickJS
• Hermes
17
下載、安裝 Node.js
18
19
20

1. JavaScript 起步走

  • 2.
    1. JavaScript 起步走 •學習目標 – 認識JavaScript發展過程 – 瞭解ECMAScript規範 – 認識TC39提案 – 準備JavaScript環境 2
  • 3.
    JavaScript 的發展 • JavaScript創建者BrendanEich • Netscape Communications最初是希望能 將Scheme語言嵌入到Navigator • 與Sun Microsystems已經在合作,希望能 在Navigator中支援Java,以在Web技術及 平臺上與微軟競爭 3
  • 4.
    • Brendan Eich在《EffectiveJavaScript》前 言中這麼描述: 1995年5月在管理階層協迫性且互相衝突的命令: 「讓它看起來像 Java」、「讓初學者容易上手」、 「讓它能控制 Netscape 瀏覽器中幾乎所有的東 西」之下,我在十天內建立了 JavaScript。 4
  • 5.
    不是 Java • JavaScript一開始命名為Mocha •1995年9月Navigator 2.0的Beta版改名為 LiveScript • 為了行銷這門語言,1995年12月被改名為 JavaScript • JavaScript與Java之間,在風格或是典範根 本上是兩種完全不同的語言 5
  • 6.
    JScript • 1996 年8 月在其Internet Explorer 3.0瀏 覽器中,推出了與JavaScript語法上極為類 似的腳本語言 • 不想與Sun處理商標問題,這門語言被命名 為JScript 6
  • 7.
    ECMA-262 第三版 • Netscape於1996年11月正式向ECMA提交 語言規範 •ECMA-262於1997 年 6 月正式釋出首個版 本,亦被稱為ECMAScript • JavaScript成為實現ECMAScript的語言 • JScript或後來的TypeScript等語言,也實 現了ECMAScript規範 7
  • 8.
    • 1999年12月發佈的ECMA-262第三版,簡 稱ES3 • 直到下一個規範版本發佈,中間耗費了十 年之久的時間 •在多方政治角力之後,原本應該是下個版 本的ES4被否決了 • 部份針對ES3缺失進行改進的特性,原預計 被發佈為ES3.1,後來在2009年12月重新 命名為ES5 8
  • 9.
    ES5 到 ES6 •ES5釐清了ES3中許多模糊不清的規範,重 大特性之一是增加嚴格模式(Strict mode) • 其他特性如設值(Setter)、取值(Getter) 函式的支援、更多的物件屬性設置,JSON 的支援也是ES5的重要規範之一 • ES6規範於2015年6月正式釋出,並希望之 後以年份來區分版本,因此又稱 ECMAScript 2015 9
  • 10.
    認識 TC39 提案 •從ES6之後,採頻繁、每年6月釋出新版本 的方式,令新版本的發佈常態化,新版本 內容僅包含當年已完成的新特性 • ECMAScript proposals • TC39是負責ECMAScript規範的技術委員會 10
  • 11.
    The TC39 Process •0:稻草人(Strawperson) • 1:提案(Proposal) • 2:草案(Draft) • 3:侯選(Candidate) • 4:完成(Finished) 11
  • 12.
  • 13.
  • 14.
    • 幾乎現有的常青(Even green)瀏覽器都 支援ES6 •建議別再考慮支援Internet Explorer • 至少以常青瀏覽器為目標環境並使用ES6, 或者在必須考量IE11的情況下使用ES5 14
  • 15.
    JavaScript 引擎 • V8 –Google開發的開放原始碼JavaScript引擎 – 用於Google Chrome及Chromium,也是 Node.js使用的JavaScript引擎 • SpiderMonkey – 早期在Netscape中使用的JavaScript引擎 – 由Mozilla Foundation維護,目前用於Firefox 瀏覽器 15
  • 16.
    • JavaScriptCore – 從KJS與PCRE regular expression程式庫而來 – 使用於Apple的Safari等以WebKit作為呈現引 擎的瀏覽器中 • Chakra – Internet Explorer使用的JavaScript引擎,本來 也使用於Edge瀏覽器 – 2018年底,Edge開始使用V8作為JavaScript 引擎,IE11則繼續使用Chakra 16
  • 17.
  • 18.
  • 19.
  • 20.