iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 4
0
自我挑戰組

半路出家的工程師重新認識 JavaScript系列 第 4

04. Speaking JavaScript 讀後心得 (1)

  • 分享至 

  • xImage
  •  

Speaking JavaScript 用的是 ES5

開始讀後心得系列前,要先說明一下 Speaking JavaScript 是 ES5

在其他鐵人文章中若看到 const, let 這種語法都是 ES6 的

講完這兩句話,有些人就會有幾個問題

  • 什麼是 ES5? ES6?
  • JavaScript 跟 ES5, ES6 的關係?
  • ECMAScript 跟 JavaScript 有關係嗎?

ES5? ES6?

ES5 要拆為 ES 及 6 來看

ES 為 ECMAScript 的縮寫,而 6 是 ECMAScript 的版本

所以 ES6 = ECMAScript 6版

JavaScript 的緣起

在開始前要先介紹幾個腳色

Netscape

看準 World Wide Web 的潛力而成立的公司,後來發明了 JavaScript

Ecma International

一個國際標準化組織,底下有多個委員會制定並推廣不同的標準化規格

Sun

發明 Java 的公司,後來被 Oracle 收購

Technical Committee 39

Ecma International 底下負責制定 ECMAScript 規格的委員會
成員由 微軟, Mozilla, Google 這樣企業派出員工來參加

故事要從 1990 年代說起...

Netscape 推出名為 Navigator 的瀏覽器稱霸了當時的市場

但他們知道 Web 必須要更動態才行

不然為了驗證使用者在表單輸入的值必須先送到後端才有 feedback

於是請來了 Brendan Eich 在瀏覽器中實作 Seheme

但更早之前 Netscape 已經跟 Sun 合作要將 Java 放入 Navigator 中。

這時 Netscape 內部就有激烈的爭論

為什麼 Web 需要兩個程式語言? Java 與另一個 scripting language

當時 Netscape 的管理階層決定這個 scripting language 必須要有相似 Java 的語法

這讓 Perl, Python 等被排除在外。

為了在其他競爭提案中捍衛 JavaScript 這個想法,Netscape 被需要有一個可以運作的原型。

Eich 在 1995 年 5 月花了十天推出第一個代號 Mocha 的 JavaScript 原型

在 Netscape 現有幾個產品中已經有「Live」的前綴,最終行銷團隊將其改名為 LiveScript

微軟來分杯羹

在 JavaScript 推出後,微軟在 IE3.0 ( 1996 年 8 月)中實作了相同的語言,但稱為 JScript

這也是許多早期開發者會看到 <script language=""> 標籤的原因。

Netscape 有部分原因是為了不讓微軟掌握全局,於是決定要將 JavaScript 標準化

並請求 Ecma International 提供這個標準

在 1996 年 11 月由 TC39 發展並制定名為 ECMA-262 這個規格。

但 Sun 已經搶先一步將 JavaScript 註冊為商標

因此,就挑選了 ECMAScript 為此標準化語言的官方名稱。

這個名稱只被用來指稱此語言的各個版本,大家還是都稱呼這語言為 JavaScript

ECMAScript 各版本推出時期

  • ECMAScript 1 (1997/6)
  • ECMAScript 2 (1998/8)
  • ECMAScript 3 (1999/12)
  • ECMAScript 4 (2008/7被中止)
  • ECMAScript 5 (2009/12)
  • ECMAScript 5.1 (2011/6)
  • ECMAScript 6 (2015/6)
  • ECMAScript 7 (2016/6)

為什麼 ES4 被中止了?

從上段可得知 ES3 推出到 ES4 被中止經歷了九年左右

後來直接在 2009/12 推出 ES5

原因是在制定 ES4 時期, TC39 一直無法在功能上取得共識

於是在 2008/7 月開會並達成了一個正式協議,主要有以下四點

  1. 發展 ES3 的漸進式更新 (後來的 ES5)
  2. 發展一個主要的新版本,做的事比 ES4 少,但比 ES3 漸進式更新多(後來的 ES6, ES7)
  3. ES4中會被捨棄 package, namespaces, early binding 功能
  4. 其他的構想會在 TC39 全員都達成共識下才著手發展

JavaScript 為什麼有其他語言的影子?

在 JavaScript 的確受到了幾個語言影響,可參考下圖
https://ithelp.ithome.com.tw/upload/images/20171223/20103518SN2fxpAeO3.png

今日總結

今天我們大概知道了 JavaScript 發展的背景故事

也知道 ECMAScript, ES5, ES6 代表的意思

並了解到同一天手殘超過一次的可能性是非常高的

感謝團員提供幾個寫作方式可以避免手殘意外再次發生

  • Duran 提供 Dropbox paper
  • Alan Liu 提供 Hexo
  • Mia 提供 Hack md

原本一個小時可以打完的文章花了快兩倍的時間QQ


上一篇
03. 為什麼挑選 Speaking JavaScript
下一篇
05. Speaking JavaScript - 基礎篇 (1)
系列文
半路出家的工程師重新認識 JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
RocMark
iT邦新手 5 級 ‧ 2017-12-23 00:25:36

Hack md 真不錯用!! 感謝分享
還支援 ctrl+shift+d 上下推移 太讚啦

awws iT邦新手 5 級 ‧ 2017-12-23 00:28:32 檢舉

Hack md 目前累積兩票!!

剛在安裝 hexo 測試中

晚點來用看看 hackMD XD

我要留言

立即登入留言