国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
階段 0:Strawman(雛形)
階段 1:Proposal(提案)
階段 2:Draft(草案)
階段 3:Candidate(候選)
階段 4:Finished(完成)
ES2018
Array.prototype.includes
指數(shù)運(yùn)算符
異步函數(shù)
字符串填充方法
異步迭代器
對象展開和剩余屬性
ES6 和 ES2015 的主要區(qū)別是什么?
為什么將 ES6 重命名為 ES2015?
ES6/ES2015 中引入了哪些關(guān)鍵特性?
ES6/ES2015 如何改進(jìn) JavaScript 編碼?
如何在我的 JavaScript 代碼中開始使用 ES6/ES2015 特性?
ES6/ES2015 是否存在任何兼容性問題?
JavaScript 和 ECMAScript 之間有什么區(qū)別?
ES6/ES2015 之后 JavaScript 的未來如何?
TypeScript 與 ES6/ES2015 的關(guān)系如何?
使用 ES6/ES2015 比使用早期版本的 JavaScript 有什么好處?
首頁 web前端 js教程 ES6(ES2015)及以后:了解JavaScript版本

ES6(ES2015)及以后:了解JavaScript版本

Feb 15, 2025 pm 12:13 PM

ES6 (ES2015) and Beyond: Understanding JavaScript Versioning

近年來,JavaScript 的發(fā)展可謂風(fēng)起云涌。每年都有新的 ECMAScript 規(guī)范發(fā)布,這使得 JavaScript 的版本管理、各個(gè)版本的功能支持以及如何編寫面向未來的代碼變得容易混淆。

為了更好地理解這看似持續(xù)不斷的更新浪潮背后的原因,讓我們簡要回顧一下 JavaScript 及其版本的歷史,并了解標(biāo)準(zhǔn)化過程為何如此重要。

關(guān)鍵要點(diǎn)

  • ES6(也稱為 ES2015)標(biāo)志著 JavaScript 版本管理的重大轉(zhuǎn)變,引入了類、Promise、箭頭函數(shù)、ES 模塊、生成器和迭代器等特性。這是一個(gè)重要的基礎(chǔ)更新,為未來的年度小型 JavaScript 版本更新奠定了基礎(chǔ)。
  • ES2015 建立了基于提案的 TC39 過程,用于討論和采納新的語言特性。此過程包含五個(gè)階段:Strawman(雛形)、Proposal(提案)、Draft(草案)、Candidate(候選)、Finished(完成),每個(gè)階段都逐步規(guī)范化和實(shí)現(xiàn)所提出的特性。
  • ES2015 之后,后續(xù)版本每年六月發(fā)布,ES2016(ES7)和 ES2017(ES8)引入了增量特性和改進(jìn)。ES2018 引入了一些強(qiáng)大的新增功能,例如異步迭代器以及對象展開和剩余屬性。
  • 將 ES6 重命名為 ES2015 是為了反映其發(fā)布年份,并擺脫版本號。此舉是為了避免混淆,并表明 JavaScript 是一種不斷更新和改進(jìn)的動態(tài)語言。新的命名約定也有助于表明語言更新和改進(jìn)的規(guī)律性。

JavaScript 版本管理的早期歷史

JavaScript 的原型于 1995 年 5 月由 Brendan Eich 在短短十天內(nèi)編寫完成。他最初被招募來為 Netscape Navigator 實(shí)現(xiàn) Scheme 運(yùn)行時(shí),但管理團(tuán)隊(duì)推動使用一種 C 風(fēng)格的語言來補(bǔ)充當(dāng)時(shí)新發(fā)布的 Java。

JavaScript 于 1995 年 12 月在 Netscape Navigator 版本 2 中首次亮相。次年,微軟對 JavaScript 進(jìn)行了逆向工程,創(chuàng)建了自己的版本,稱為 JScript。JScript 與 Internet Explorer 瀏覽器版本 3 一起發(fā)布,幾乎與 JavaScript 完全相同——甚至包括所有相同的錯(cuò)誤和怪癖——但它確實(shí)有一些額外的 Internet Explorer 獨(dú)有特性。

ECMAScript 的誕生

確保 JScript(以及任何其他變體)與 JavaScript 保持兼容的必要性促使 Netscape 和 Sun Microsystems 對該語言進(jìn)行標(biāo)準(zhǔn)化。他們在歐洲計(jì)算機(jī)制造商協(xié)會(ECMA)的幫助下完成了這項(xiàng)工作,ECMA 將負(fù)責(zé)托管該標(biāo)準(zhǔn)。標(biāo)準(zhǔn)化后的語言被稱為 ECMAScript,以避免侵犯 Sun 的 Java 商標(biāo)——此舉造成了相當(dāng)多的混淆。最終,ECMAScript 用于指代規(guī)范,而 JavaScript(現(xiàn)在仍然如此)用于指代語言本身。

負(fù)責(zé) JavaScript 版本管理和維護(hù) ECMAScript 的工作組被稱為技術(shù)委員會 39,或 TC39。它由來自 Apple、Google、Microsoft 和 Mozilla 等所有主要瀏覽器廠商的代表組成,以及其他對 Web 發(fā)展感興趣的公司受邀的專家和代表。他們定期舉行會議,以決定該語言的發(fā)展方向。

當(dāng) JavaScript 于 1997 年由 TC39 標(biāo)準(zhǔn)化時(shí),該規(guī)范被稱為 ECMAScript 版本 1。最初,ECMAScript 的后續(xù)版本每年發(fā)布一次,但由于缺乏共識以及 ECMAScript 4 周圍難以管理的大型功能集,最終變得零星。因此,該版本被終止并縮小到 3.1,但并未以該名稱最終確定,而是最終演變?yōu)?ECMAScript 5。它于 2009 年 12 月發(fā)布,距 ECMAScript 3 發(fā)布 10 年后,并引入了 JSON 序列化 API、Function.prototype.bind 和嚴(yán)格模式等功能。兩年后,發(fā)布了一個(gè)維護(hù)版本來澄清最新迭代 5.1 中的一些歧義。

ECMAScript 2015 和年度發(fā)布的復(fù)興

隨著 TC39 解決因 ECMAScript 4 導(dǎo)致的分歧,Brendan Eich 強(qiáng)調(diào)需要更短期、更小規(guī)模的發(fā)布。這些新的規(guī)范中的第一個(gè)是 ES2015(最初命名為 ECMAScript 6 或 ES6)。這個(gè)版本是一個(gè)龐大但必要的基石,為未來的年度 JavaScript 版本管理提供了支持。它包含許多當(dāng)今許多開發(fā)人員都非常喜歡的特性,例如:

  • Promise
  • 箭頭函數(shù)
  • ES 模塊
  • 生成器和迭代器

ES2015 是第一個(gè)遵循 TC39 過程 的版本,這是一個(gè)基于提案的模型,用于討論和采納語言特性。

TC39 過程

在提案被接受到即將發(fā)布的 ECMAScript 版本之前,它必須經(jīng)過五個(gè)階段。

階段 0:Strawman(雛形)

這是一個(gè)方便的步驟,允許向規(guī)范提交想法。任何人都可以提出特性建議——即注冊為貢獻(xiàn)者的 TC39 成員和非成員。

階段 1:Proposal(提案)

提案正式化的第一個(gè)階段。必須:

  • 描述該解決方案糾正的任何現(xiàn)有問題
  • 提供 API 概要,以及高級實(shí)現(xiàn)細(xì)節(jié),以及 polyfill 和/或演示
  • 預(yù)先討論潛在的障礙

必須選擇一位 負(fù)責(zé)人 來采納和推進(jìn)該提案。此人必須是 TC39 成員。

階段 2:Draft(草案)

這是該特性可能包含在 ECMAScript 未來版本中的里程碑。在此,使用規(guī)范描述的正式語言詳細(xì)說明提案的語法和語義。此時(shí)應(yīng)該提供實(shí)驗(yàn)性實(shí)現(xiàn)。

階段 3:Candidate(候選)

在此,提案的大部分內(nèi)容和支持技術(shù)已經(jīng)開發(fā)完成,但需要來自用戶和實(shí)現(xiàn)者(例如瀏覽器廠商)的進(jìn)一步反饋。一旦獲得并采取行動,概要和規(guī)范細(xì)節(jié)將由指定的審閱者和指定的編輯最終確定和簽字。由于此階段需要符合的實(shí)現(xiàn),因此此后只接受關(guān)鍵更改。

階段 4:Finished(完成)

該提案已被接受,可以添加到 ECMAScript 中。因此,它固有地:

  • 使用 JavaScript 編寫的 Test262 套件的一部分的驗(yàn)收測試已被編寫,以證明該特性的符合性和行為
  • 至少有兩個(gè)符合的實(shí)現(xiàn)可用并已發(fā)布,所有這些都證明了其健壯性和開發(fā)人員可用性
  • 已向官方 ECMA-262 代碼庫提交拉取請求,并已獲得規(guī)范編輯的簽字。

上述代碼庫的貢獻(xiàn)文檔進(jìn)一步詳細(xì)說明了使用 GitHub 問題和拉取請求來管理對語言的添加。

展望未來

在完成 ES2015 和建立 TC39 的 JavaScript 版本管理和更新過程之后,后續(xù)版本每年六月發(fā)布,提案的包含時(shí)間限制為一年。在撰寫本文時(shí),已經(jīng)有三個(gè)新的規(guī)范。

ES2016

也稱為 ES7,這是 ECMAScript 的第一個(gè)較小、增量版本。除了錯(cuò)誤修復(fù)之外,它只添加了兩個(gè)特性。

Array.prototype.includes

此實(shí)例方法簡化了在數(shù)組中搜索值的操作:

// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;

// ES2016:
const hasBob = names.includes('bob');

指數(shù)運(yùn)算符

在 ES2016 之前,可以使用 Math.pow(base, exponent) 執(zhí)行冪運(yùn)算。此版本引入了一個(gè)運(yùn)算符(**),它具有自己的優(yōu)先級:

// ES2016 之前
Math.pow(5, 3); // => 125

// ES2016
5 ** 3; // => 125

ES2017

ES2017(又名 ES8)是一個(gè)稍大的版本,包含一些有用的方法和語法結(jié)構(gòu)。

異步函數(shù)

Promise 已將我們從回調(diào)地獄中解救出來,但它們的 API 仍然表現(xiàn)出冗長。異步函數(shù)使用與同步代碼非常相似的語法對它們進(jìn)行了抽象:

// Promise
const getProfile = name => {
  return fetch(`https://some-api/people/${name}`)
    .then(res => res.json())
    .then(({ profile }) => profile); // 從解析的對象中解構(gòu) `profile`
};

// async/await
const getProfile = async name => {
  const res = await fetch(`https://some-api/people/${name}`);
  const { profile } = await res.json();
  return profile;
};

字符串填充方法

String.prototype.padStart(length, padder) 和 padEnd(length, padder) 將分別在字符串的開頭和結(jié)尾重復(fù)添加 padder(這是可選的,默認(rèn)為空格),直到達(dá)到 length 個(gè)字符:

'foo'.padStart(6);          // => '   foo';
'foo'.padEnd(6);            // => 'foo   ';
'foo'.padStart(10, 'bar');  // => 'barbarbfoo';
'foo'.padEnd(10, 'bar');    // => 'foobarbarb';

其他特性包括尾隨逗號、共享內(nèi)存和原子操作以及靜態(tài)對象方法(Object.entries()、Object.values() 和 Object.getOwnPropertyDescriptors())。

ES2018

在撰寫本文時(shí),這個(gè)最新版本引入了一小部分強(qiáng)大的新增功能。

異步迭代器

雖然 Promise.all() 允許您等待多個(gè) Promise 的解析,但在某些情況下,您可能需要順序迭代異步檢索的值。現(xiàn)在可以與 Promise 數(shù)組一起等待異步迭代器:

// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;

// ES2016:
const hasBob = names.includes('bob');

對象展開和剩余屬性

表面上看,由于 Babel 等編譯器的可用性,這兩個(gè)語法改進(jìn)在 JavaScript 開發(fā)人員中已經(jīng)很流行。對象展開和剩余屬性類似于數(shù)組展開和剩余屬性,并允許淺復(fù)制和對象屬性的分組解構(gòu):

// ES2016 之前
Math.pow(5, 3); // => 125

// ES2016
5 ** 3; // => 125

其他已接受的提案包括 Promise.prototype.finally(),以及對正則表達(dá)式和模板字面量的增強(qiáng)。

結(jié)語

JavaScript 在很短的時(shí)間內(nèi)得到了極大的發(fā)展。雖然這歸功于 ECMAScript 標(biāo)準(zhǔn)和 TC39 的出色工作,但由于之前 JavaScript 版本管理和開發(fā)缺乏穩(wěn)定性和凝聚力,這最初是一段艱辛的旅程。

由于提案過程相對成熟,該語言只能以務(wù)實(shí)和可控的方式改進(jìn)。對于 Web 開發(fā)人員來說,這是一個(gè)偉大的時(shí)代!

關(guān)于 JavaScript 版本管理的常見問題解答:ES6 和 ES2015

ES6 和 ES2015 的主要區(qū)別是什么?

ES6 和 ES2015 本質(zhì)上是相同的。ES6 是由 ECMA 國際標(biāo)準(zhǔn)化的 ECMAScript 編程語言的第六版。ES2015 只是 ES6 的新名稱,反映了它發(fā)布的年份。重命名是為了反映發(fā)布年份并擺脫版本號,這可能會造成混淆。

為什么將 ES6 重命名為 ES2015?

將 ES6 重命名為 ES2015 是為了反映其發(fā)布年份并擺脫版本號。此舉是為了避免混淆,并表明 JavaScript 是一種不斷更新和改進(jìn)的動態(tài)語言。新的命名約定也有助于表明語言更新和改進(jìn)的規(guī)律性。

ES6/ES2015 中引入了哪些關(guān)鍵特性?

ES6/ES2015 為 JavaScript 引入了許多新特性,包括用于變量聲明的 letconst、用于更短函數(shù)語法的箭頭函數(shù)、用于字符串插值的模板字面量、用于面向?qū)ο缶幊痰念?、用于異步編程?Promise 以及用于代碼組織的模塊等等。

ES6/ES2015 如何改進(jìn) JavaScript 編碼?

ES6/ES2015 通過多種方式改進(jìn) JavaScript 編碼。它引入了使該語言更強(qiáng)大且更易于使用的新語法和特性。例如,箭頭函數(shù)提供了更簡潔的函數(shù)編寫語法,而 Promise 使處理異步操作更容易。模塊的引入也有助于更好地組織代碼,使其更易于管理和維護(hù)。

如何在我的 JavaScript 代碼中開始使用 ES6/ES2015 特性?

要在 JavaScript 代碼中開始使用 ES6/ES2015 特性,您可以使用像 Babel 這樣的轉(zhuǎn)譯器,它將 ES6 代碼轉(zhuǎn)換為可在當(dāng)前瀏覽器中運(yùn)行的 ES5 代碼。您還可以使用像 Webpack 這樣的模塊打包器來管理和捆綁您的 JavaScript 模塊。

ES6/ES2015 是否存在任何兼容性問題?

雖然大多數(shù)現(xiàn)代瀏覽器都支持 ES6/ES2015 的大部分特性,但與舊版瀏覽器可能存在一些兼容性問題。為了確保兼容性,您可以使用 polyfill,它提供了您期望瀏覽器原生支持的功能。

JavaScript 和 ECMAScript 之間有什么區(qū)別?

JavaScript 是一種最初由 Netscape 開發(fā)的編程語言。ECMAScript 是由 ECMA 國際標(biāo)準(zhǔn)化的 JavaScript 標(biāo)準(zhǔn)版本。JavaScript 實(shí)現(xiàn) ECMAScript,這意味著它遵循 ECMAScript 標(biāo)準(zhǔn)中定義的規(guī)則和結(jié)構(gòu)。

ES6/ES2015 之后 JavaScript 的未來如何?

ES6/ES2015 之后,JavaScript 將繼續(xù)發(fā)展,每年都會發(fā)布新版本,每個(gè)版本都會引入新的特性和改進(jìn)。JavaScript 的未來可能會看到更強(qiáng)大的特性、更好的性能以及跨不同平臺和設(shè)備的更高兼容性。

TypeScript 與 ES6/ES2015 的關(guān)系如何?

TypeScript 是 JavaScript 的超集,它為該語言添加了靜態(tài)類型。它支持 ES6/ES2015 的所有特性,甚至包括 JavaScript 中找不到的一些附加特性。TypeScript 代碼被轉(zhuǎn)譯為 JavaScript,因此它可以在任何 JavaScript 環(huán)境中運(yùn)行。

使用 ES6/ES2015 比使用早期版本的 JavaScript 有什么好處?

與早期版本的 JavaScript 相比,使用 ES6/ES2015 提供了許多好處。它引入了使該語言更強(qiáng)大且更易于使用的新語法和特性。它還改進(jìn)了代碼組織和可維護(hù)性,并為復(fù)雜的應(yīng)用程序和大型代碼庫提供了更好的支持。

以上是ES6(ES2015)及以后:了解JavaScript版本的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用于不同的應(yīng)用場景。Java用于大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用于網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時(shí)區(qū)問題建議使用支持時(shí)區(qū)的庫,如Luxon。掌握這些要點(diǎn)能有效避免常見錯(cuò)誤。

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

為什么要將標(biāo)簽放在的底部? 為什么要將標(biāo)簽放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript:探索用于高效編碼的數(shù)據(jù)類型 JavaScript:探索用于高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什么是在DOM中冒泡和捕獲的事件? 什么是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個(gè)階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實(shí)現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委托,提高動態(tài)內(nèi)容處理效率;5.捕獲可用于提前攔截事件,如日志記錄或錯(cuò)誤處理。了解這兩個(gè)階段有助于精確控制JavaScript響應(yīng)用戶操作的時(shí)機(jī)和方式。

Java和JavaScript有什么區(qū)別? Java和JavaScript有什么區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。1.Java是靜態(tài)類型、編譯型語言,適用于企業(yè)應(yīng)用和大型系統(tǒng)。2.JavaScript是動態(tài)類型、解釋型語言,主要用于網(wǎng)頁交互和前端開發(fā)。

See all articles