SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Justin Lin
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips confluent
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJustin Lin
 
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootBuilding a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootOmri Spector
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
 
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...NETWAYS
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJustin Lin
 
Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019J V
 
Introduction to ASP.NET Core
Introduction to ASP.NET CoreIntroduction to ASP.NET Core
Introduction to ASP.NET CoreAvanade Nederland
 
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersDavid Ware
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningGuido Schmutz
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsi krishna
 
Visualizing Kafka Security
Visualizing Kafka SecurityVisualizing Kafka Security
Visualizing Kafka SecurityDataWorks Summit
 
CI/CD with AWS Code Services
CI/CD with AWS Code ServicesCI/CD with AWS Code Services
CI/CD with AWS Code ServicesPulkit Gupta
 
Rancher Rodeo
Rancher RodeoRancher Rodeo
Rancher RodeoSUSE
 
Power shell basics day 3
Power shell basics day 3Power shell basics day 3
Power shell basics day 3Ashish Raj
 

What's hot (20)

Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
 
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootBuilding a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
 
Kafka Security
Kafka SecurityKafka Security
Kafka Security
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
 
Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019
 
Introduction to ASP.NET Core
Introduction to ASP.NET CoreIntroduction to ASP.NET Core
Introduction to ASP.NET Core
 
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Visualizing Kafka Security
Visualizing Kafka SecurityVisualizing Kafka Security
Visualizing Kafka Security
 
CI/CD with AWS Code Services
CI/CD with AWS Code ServicesCI/CD with AWS Code Services
CI/CD with AWS Code Services
 
Rancher Rodeo
Rancher RodeoRancher Rodeo
Rancher Rodeo
 
Power shell basics day 3
Power shell basics day 3Power shell basics day 3
Power shell basics day 3
 

Similar to 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
 

Similar to 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
 

More from 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
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器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
 

More from 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 容器安全管理
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
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
 

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