SlideShare ist ein Scribd-Unternehmen logo
1 von 20
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

Weitere ähnliche Inhalte

Was ist angesagt?

クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-RetryフレームワークY Watanabe
 
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Edureka!
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJustin Lin
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patternsnekop
 
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係datastaxjp
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
Apache Spark & Scala
Apache Spark & ScalaApache Spark & Scala
Apache Spark & ScalaEdureka!
 
サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情Shinya Mochida
 
Upgrade Without the Headache: Best Practices for Upgrading Hadoop in Production
Upgrade Without the Headache: Best Practices for Upgrading Hadoop in ProductionUpgrade Without the Headache: Best Practices for Upgrading Hadoop in Production
Upgrade Without the Headache: Best Practices for Upgrading Hadoop in ProductionCloudera, Inc.
 
PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用QlikPresalesJapan
 
那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事Wen-Tien Chang
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論Justin Lin
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...Insight Technology, Inc.
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」Hiroyuki Ohnaka
 
SQL Server High Availability and Disaster Recovery
SQL Server High Availability and Disaster RecoverySQL Server High Availability and Disaster Recovery
SQL Server High Availability and Disaster RecoveryMichael Poremba
 

Was ist angesagt? (20)

クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
 
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
Apache Spark & Scala
Apache Spark & ScalaApache Spark & Scala
Apache Spark & Scala
 
サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情
 
Upgrade Without the Headache: Best Practices for Upgrading Hadoop in Production
Upgrade Without the Headache: Best Practices for Upgrading Hadoop in ProductionUpgrade Without the Headache: Best Practices for Upgrading Hadoop in Production
Upgrade Without the Headache: Best Practices for Upgrading Hadoop in Production
 
PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用
 
那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論
 
DevLOVE DDDBC
DevLOVE DDDBCDevLOVE DDDBC
DevLOVE DDDBC
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」
 
SQL Server High Availability and Disaster Recovery
SQL Server High Availability and Disaster RecoverySQL Server High Availability and Disaster Recovery
SQL Server High Availability and Disaster Recovery
 

Ähnlich wie 1. JavaScript 起步走

一個微信專案從0到000的效能調教
一個微信專案從0到000的效能調教一個微信專案從0到000的效能調教
一個微信專案從0到000的效能調教Bruce Chen
 
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_checkMvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_checkCevin Cheung
 
Ch13 整合Spring MVC
Ch13  整合Spring MVC Ch13  整合Spring MVC
Ch13 整合Spring MVC Justin Lin
 
人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验zhen chen
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2twMVC
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC
 
用十分鐘瞭解 《JavaScript的程式世界》
用十分鐘瞭解  《JavaScript的程式世界》用十分鐘瞭解  《JavaScript的程式世界》
用十分鐘瞭解 《JavaScript的程式世界》鍾誠 陳鍾誠
 
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美AgileCommunity
 
ASP.NET MVC 快速上手
ASP.NET MVC 快速上手ASP.NET MVC 快速上手
ASP.NET MVC 快速上手Study4TW
 
必备的 Java 参考资源列表
必备的 Java 参考资源列表必备的 Java 参考资源列表
必备的 Java 参考资源列表wensheng wei
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用Shengyou Fan
 
Android程式設計(7)
Android程式設計(7)Android程式設計(7)
Android程式設計(7)Roy Wang
 
Nuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageNuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageAlan Tsai
 
Javascript training
Javascript trainingJavascript training
Javascript training敏军 李
 
架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境Phate334
 
Modern Web Development Introduction
Modern Web Development IntroductionModern Web Development Introduction
Modern Web Development IntroductionJohn Chou
 

Ähnlich wie 1. JavaScript 起步走 (17)

一個微信專案從0到000的效能調教
一個微信專案從0到000的效能調教一個微信專案從0到000的效能調教
一個微信專案從0到000的效能調教
 
J S教材
J S教材J S教材
J S教材
 
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_checkMvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check
 
Ch13 整合Spring MVC
Ch13  整合Spring MVC Ch13  整合Spring MVC
Ch13 整合Spring MVC
 
人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有
 
用十分鐘瞭解 《JavaScript的程式世界》
用十分鐘瞭解  《JavaScript的程式世界》用十分鐘瞭解  《JavaScript的程式世界》
用十分鐘瞭解 《JavaScript的程式世界》
 
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
 
ASP.NET MVC 快速上手
ASP.NET MVC 快速上手ASP.NET MVC 快速上手
ASP.NET MVC 快速上手
 
必备的 Java 参考资源列表
必备的 Java 参考资源列表必备的 Java 参考资源列表
必备的 Java 参考资源列表
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用
 
Android程式設計(7)
Android程式設計(7)Android程式設計(7)
Android程式設計(7)
 
Nuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageNuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的package
 
Javascript training
Javascript trainingJavascript training
Javascript training
 
架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境
 
Modern Web Development Introduction
Modern Web Development IntroductionModern Web Development Introduction
Modern Web Development Introduction
 

Mehr von Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構Justin Lin
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組Justin Lin
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理Justin Lin
 
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承Justin Lin
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別Justin Lin
 
4. 流程語法與函式
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式Justin Lin
 
3.型態與運算子
3.型態與運算子3.型態與運算子
3.型態與運算子Justin Lin
 
1. Python起步走
1. Python起步走1. Python起步走
1. Python起步走Justin Lin
 
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDEJustin Lin
 
Python 3.9 技術手冊目錄
Python 3.9 技術手冊目錄Python 3.9 技術手冊目錄
Python 3.9 技術手冊目錄Justin Lin
 
CH19:深入模組化
CH19:深入模組化CH19:深入模組化
CH19:深入模組化Justin Lin
 

Mehr von Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理
 
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
 
4. 流程語法與函式
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式
 
3.型態與運算子
3.型態與運算子3.型態與運算子
3.型態與運算子
 
1. Python起步走
1. Python起步走1. Python起步走
1. Python起步走
 
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
 
Python 3.9 技術手冊目錄
Python 3.9 技術手冊目錄Python 3.9 技術手冊目錄
Python 3.9 技術手冊目錄
 
CH19:深入模組化
CH19:深入模組化CH19:深入模組化
CH19:深入模組化
 

1. JavaScript 起步走

  • 1.
  • 2. 1. JavaScript 起步走 • 學習目標 – 認識JavaScript發展過程 – 瞭解ECMAScript規範 – 認識TC39提案 – 準備JavaScript環境 2
  • 3. JavaScript 的發展 • JavaScript創建者Brendan Eich • Netscape Communications最初是希望能 將Scheme語言嵌入到Navigator • 與Sun Microsystems已經在合作,希望能 在Navigator中支援Java,以在Web技術及 平臺上與微軟競爭 3
  • 4. • Brendan Eich在《Effective JavaScript》前 言中這麼描述: 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
  • 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
  • 19. 19
  • 20. 20