ES6 入門系列 (一)ES6的前世今生

来源:https://www.cnblogs.com/LHLVS/archive/2019/05/20/10893725.html
-Advertisement-
Play Games

要學好javascript , ECMAScript標準比什麼都強, ESMAScript標準已經用最嚴謹的語言和最完美的角度展現了語言的實質和特性。 理解語言的本質後,你已經從沙堆里挑出了珍珠,能經得起時光的磨礪。 有很多問題在網路上被包裝了太多次,解釋的千奇百怪,但用規範的語言來描述竟是如此簡單 ...


  要學好javascript , ECMAScript標準比什麼都強,

  ESMAScript標準已經用最嚴謹的語言和最完美的角度展現了語言的實質和特性。

理解語言的本質後,你已經從沙堆里挑出了珍珠,能經得起時光的磨礪。

  有很多問題在網路上被包裝了太多次,解釋的千奇百怪,但用規範的語言來描述竟是如此簡單。

  什麼是ES6, 剛開始學ES6的時候我以為它就是ECMAScript2015, 

然而ES6是一個泛指, 它是指5.1版本後JavaScript的下一代標準,

它涵蓋了ES2015, ES2016, ES2017等。

  那ES6語法又是誰提出來的呢? 

  任何人都可以向標準委員會提案, 要求修改語言標準。一種新的語法從提案變成正式標準,

需要經過五個階段,每個階段的變動都要由TC39委員會批准。

  • Stage0:   Strawman(展示階段)
  • Stage1:    Proposal(征求意見階段)
  • Stage2:    Draft(草案階段)
  • Stage3:    Candidate(候選階段)
  • Stage4:     Finished(定案階段)

一個提案只要能進入草案階段,就基本認為其包括在以後的正式標準里,而ES6從開始定製到最後發佈,整整用了15年。

  1997年, ECMAScript 1.0 發佈

  1998年6月, ECMAScript  2.0 發佈

  1999年12月, ECMAScript 3.0 發佈, 這個版本奠定了javascript 語言的基本語法, 在業界得到廣泛支持,

成為通行標準, 直到今天, 初入web前端的學習者學js其實也是學習3.0的語法。

  2000年,ECMAScript 4.0開始醞釀, 但是相信大部分本文的讀者沒有聽過ES4, 因為ES4太激進了,對ES3

做了徹底的升級,完全不相容ES3, 這意味著用ES3寫的網頁以後就不能用了, 導致標準委員會的一些成員不願意接受, 

所以這個版本最後沒有通過,但是其大部分內容被ES6所繼承, 所以說ES6制定的起點應該是在2000年。

  具體是怎麼回事呢?

  2007年10月, ECMAScript 4.0草案發佈, 本來預計次年8月發佈正式版本,但是各方對於是否通過這個標準發生了

嚴重分歧, 以Yahoo, Microsoft, Google為首的大公司, 反對對JavaScript的大幅升級,主張小幅改動;以JavaScript創造者

Brendan Eich 為首的Mozilla公司,則堅持當前的草案。

  2008年7月, 由於各方分歧太大, ECMA開會決定終止ES4的開發, 將其中涉及現有功能改善的一小部分發佈為ES3.1,

而將其他激進的設想擴大範圍,放入以後的版本,該版本項目代號為Harmony(和諧), 會後不久, ES3.1 就改名為 ES 5了。

  2009年12月,ES5.0正式發佈。Harmony 項目則一分為二, 一些較為可行的設想定名為JavaScript.next繼續開發,後來

演變成ES6; 一些不太成熟的設想被視為JavaScript.next.next, 更遠的將來考慮推出。

  2011年6月,ES5.1發佈,並且成為ISO國際標準。

  2013年3月, ES6草案凍結,不再添加新功能,新的功能設想將放到ES7中。

  2013年12月,ES6草案發佈,此後時12個月的討論期,聽取各方意見。

  2015年6月,ES6正式通過,成為國際標準。從2000年算起,已經過了15年。

  ECMAScript 經歷了這些變故後, 也從語言的角度反應了各大廠商之間的立場差異,但是JavaScript遵守一個JavaScript的原則,

就是所有的版本都要向後相容, web語言的解釋器版本不是由開發者決定的,而是由用戶決定的,所以JavaScript無法向Python, Ruby, Perl

那樣, 發佈一個不向下相容的大版本, 這就是ES4 失敗的根源。

  現在各大瀏覽器的最新版本對ES6的支持度越來越高, 如果你想檢查你的各種運行環境對ES6的支持情況,

可以下載阮一峰老師的es-checker。

  命令行輸入:$  npm install -g  es-checker

        $  es-checker

  

 摘抄自 ———— 阮一峰老師的ES6標準入門。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • call apply ...
  • bootstrap支持的js插件 概覽 bootstrap中的JavaScript插件: | 插件名稱 | 定義文件 | | | : | | 動畫過濾 | transition.js | | 模態框 | modal.js | | 下拉菜單 | dropdown.js | | 滾動偵測 | scrol ...
  • 報錯: Method "watch" has type "object" in the component definition. Did you reference the function Method "watch" has type "object" in the component def ...
  • Maptalks 項目是一個 HTML5 的地圖引擎, 基於原生 ES6 Javascript 開發: - 二三維一體化地圖, 通過二維地圖的旋轉 /傾斜增加三維視角 - 插件化設計, 能與其他圖形庫結合, 開發各種二三維效果, 例如 echarts/d3/THREE 等 - 很認真的優化了繪製性能 ...
  • 一 、 過渡的啟動 啟動過渡效果,與以下四個方法相關: d3.transition([selection],[name]) //創建一個過渡對象。但是由於每個選擇集中都有transition()方法,可用d3.select("rect").transition()的方式來創建過渡,因此一般不直接用d ...
  • IE判斷檢測 jQuery 在 1.9 版本之前,提供了一個瀏覽器對象檢測的屬性 使用率極高。但是在版本發佈之後,大家鐘愛的這個屬性被無情的拋棄了。大家開始著手尋找.browser 的替代方案。於是各種利用 IE bug 的檢測方法被搜了出來: // IE 678 最短方法 var ie = !-[ ...
  • <ul><li>First</li><li>http://www.hfxskyyj.com/</li></ul>如上,如何選中html()值為First的jquery對象,$([innerHTML='First'])這種方法不行,說沒有innerHTML這個屬性. $(&quot;ul li&quo ...
  • 一、分頁排序案例 後端負責提供介面(3000) 前端負責業務邏輯(8080) 介面地址:從8080跨域到3000拿數據 http://127.0.0.1:3000/shouji http://127.0.0.1:8080/api/shouji 後端app.js var express = requi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...