欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 2018 中即將迎來的新功能

 更新時(shí)間:2018年09月21日 15:09:38   投稿:mrr  
JavaScript 2018 中即將迎來的新功能:異步生成器及更好的正則表達(dá)式。更多常規(guī)正則表達(dá)式功能大家跟隨小編一起通過本文學(xué)習(xí)吧

JavaScript 2018 中即將迎來的新功能:異步生成器及更好的正則表達(dá)式

2018 年 6 月發(fā)布的最新年度 ECMAScript 更新,盡管在常見功能的積壓上仍然遠(yuǎn)遠(yuǎn)小于 ECMAScript 6,但依然是迄今為止最大的年度版本。

身為 ECMAScript 編輯及微軟在 ECMA TC39 委員會(huì)代表的 Brian Terlson 告訴 The New Stack:這個(gè)版本中兩個(gè)最大的開發(fā)者功能是異步生成器和一些期待已久的正則表達(dá)式改進(jìn),以及 rest/spread 屬性。

“異步生成器和迭代器是將異步函數(shù)和迭代器結(jié)合起來的結(jié)果,所以它就像你可以在其中等待的異步生成器或你可以從中得到返回值的異步函數(shù),”他解釋道。以前,ECMAScript 允許你編寫一個(gè)可以輸入或等待但不能同時(shí)進(jìn)行兩者操作的函數(shù)。“這對(duì)于在 Web 平臺(tái)占比越來越大的消費(fèi)流來說非常方便,尤其是在 Fetch 對(duì)象公開流的情況下?!?/p>

異步迭代器類似于 Observable 模式,但更靈活?!癘bservable 是推模型; 一旦你訂閱了它,無論你是否準(zhǔn)備好,你都會(huì)被爆炸式的事件和通知沖擊,所以你必須實(shí)施緩沖或采樣策略來處理干擾,”Terlson 解釋道。異步迭代器是一種推拉模型 —— 你請(qǐng)求一個(gè)值后發(fā)送給你 —— 這對(duì)于諸如網(wǎng)絡(luò) IO 原語之類的東西更有效。

Promise.prototype.finally 對(duì)異步編程也很有幫助,在一個(gè) promise 狀態(tài)變?yōu)?fulfilled 或 rejected 后,指定一個(gè)最終方法來進(jìn)行清理。

更多常規(guī)正則表達(dá)式功能

Terlson 對(duì)正則表達(dá)式的改進(jìn)感到特別興奮(其中大部分工作都是由 V8 團(tuán)隊(duì)完成的,他們已經(jīng)完成了這四個(gè)主要功能的早期實(shí)現(xiàn)),因?yàn)檫@是此語言落后的領(lǐng)域。

“自從 JavaScript 誕生之日起,ECMAScript 正則表達(dá)式就沒有過顯著進(jìn)步;幾乎所有其他編程語言的正則表達(dá)式庫都比 ECMAScript 的功能高級(jí)?!癊CMAScript 6 包含了一些小的更新,但他將 ECMAScript 2018 視為“第一次明顯改變你如何編寫正則表達(dá)式的更新”。

dotAll 標(biāo)志使點(diǎn)字符匹配所有字符,而不再會(huì)對(duì)匹配一些換行符(比如 n 或 f )無效。“你不能使用點(diǎn)字符,除非你處于多行模式并且你不關(guān)心每行的結(jié)束,”他指出。這方面的變通辦法創(chuàng)造了一些不必要的復(fù)雜的正則表達(dá)式,Terlson 期望“每個(gè)人都能在正則表達(dá)式中使用該模式”。

命名捕獲組與許多其他語言中的命名組類似,你可以在命名正則表達(dá)式匹配的字符串中的不同部分,并將其視為對(duì)象?!斑@幾乎等同于在你的正則表達(dá)式中添加注釋,通過賦予它一個(gè)名字來解釋該組試圖捕捉的內(nèi)容,”他解釋道。“這個(gè)模式的一部分是月份,這是出生日期……這對(duì)于未來其他人維護(hù)你的模式真的很有幫助?!?/p>

還有其他關(guān)于空字符的提案,即告訴正則表達(dá)式引擎忽略模式匹配中的空格、換行符以及注釋,允許在空格后的行尾添加注釋,這種特性可能包含在 ECMAScript 的未來版本中并將進(jìn)一步提高可維護(hù)性。

以前 ECMAScript 有先行斷言但沒有后行斷言。“人們使用了一些技巧,比如反轉(zhuǎn)字符串,然后進(jìn)行匹配,或一些其他 hacks,”Terlson 指出。這對(duì)于查找和替換的正則表達(dá)式特別有用?!澳憧吹降牟]有成為你匹配的一部分,所以如果你要替換前后任何一邊有美元符號(hào)的數(shù)字,你就可以做到這一點(diǎn)而無需做額外的工作將美元符號(hào)重新放回去?!盓CMAScript 后行斷言允許像 C# 中那樣的可變長度的后行斷言,而不僅僅是 Perl 中的固定長度模式。

特別是對(duì)于需要支持國際用戶的開發(fā)人員,允許在正則表達(dá)式中使用 Unicode 屬性轉(zhuǎn)義 \\p{…} 和 \\P{…} 將使創(chuàng)建 Unicode 可識(shí)別的正則表達(dá)式變得更加容易。目前,這對(duì)開發(fā)人員來說是件很麻煩的事。

“Unicode 定義了數(shù)字,但這些數(shù)字不僅包括基本拉丁語 ASCII 0 到 9,還包括數(shù)學(xué)數(shù)字,粗體數(shù)字,大綱數(shù)字,花哨的演示數(shù)字,表格數(shù)字。如果要匹配 Unicode 中的任何數(shù)字,則 Unicode 可識(shí)別的應(yīng)用程序必須具有可用的整個(gè) Unicode 數(shù)據(jù)表。通過添加此功能,你可以將這些全部委托給 Unicode,”他說。如果你想以嚴(yán)格的方式匹配 Unicode 字符,比如說進(jìn)行表單驗(yàn)證,并且你想做正確的事情而不是告訴人們他們的名稱是無效的,這在很多情況下很難做到,但是使用 Unicode 字符類你可以明確指出名稱所需的字符范圍。已經(jīng)有了不同語言和腳本的類,所以如果你只想處理希臘語或漢字,完全可以做到。Emoji 正變得越來越普遍。

還有一些新的國際化 API,用于本地化的日期和時(shí)間格式,歐元貨幣格式和復(fù)數(shù)形式,這樣可以更輕松地執(zhí)行本地化標(biāo)簽和按鈕等操作。

ECMAScript 2018 擴(kuò)展了對(duì)象和數(shù)組對(duì) rest 和 spread 模式的支持(在 React 生態(tài)系統(tǒng)中很常見,許多開發(fā)人員都沒有意識(shí)到它還沒有完全標(biāo)準(zhǔn)化),Terlson 稱之為有超大影響的小功能。rest 和 spread 對(duì)于復(fù)制和克隆對(duì)象很有用,例如,如果你有一個(gè)不可變的結(jié)構(gòu),而你要更改除一個(gè)屬性之外的所有內(nèi)容,或者你想復(fù)制一個(gè)對(duì)象但添加一個(gè)額外的屬性。Terlson 指出,這種模式經(jīng)常用于為選項(xiàng)記錄分配默認(rèn)值?!皩?duì)于你一直在做的事情來說,這是一個(gè)非常好的語法模式?!?/p>

Babel 和 TypeScript 等轉(zhuǎn)換器已經(jīng)支持 ECMAScript 2018 的許多功能。瀏覽器支持也將隨著時(shí)間的推移實(shí)現(xiàn),并且所有新功能都已經(jīng)在 Chrome 的發(fā)布版本中(要獲得完整的支持矩陣圖表,請(qǐng)查看 ECMAScript 兼容性表)。

ECMAScript 兼容性表檢測(cè)到的瀏覽器支持情況。

未來發(fā)展;ECMAScript 2019

一些有趣的提案尚未達(dá)到成為 ECMAScript 標(biāo)準(zhǔn)的一部分所必需的第四階段,包括對(duì)私有字段和方法的聲明略有爭議的想法,其中包括許多備選提案。

當(dāng)在 ECMAScript 6 中引入類時(shí),它們是“極小的”,Terlson 解釋為“故意在很小[范圍],因?yàn)槲覀儗⒃谝院罄^續(xù)處理它們。”私有字段允許開發(fā)人員聲明可以在類的內(nèi)部通過名稱進(jìn)行引用的字段,但不能從類的外部訪問,”他說。這不只是提供了更好的性能,因?yàn)楫?dāng)在類構(gòu)造函數(shù)中聲明所有字段時(shí),運(yùn)行時(shí)可以更好地優(yōu)化對(duì)象的處理,但也是語言強(qiáng)制實(shí)現(xiàn)隱私,而 TypeScript 中的私有字段則不是這樣。與 symbols 不同,你可以使用 get 屬性列出對(duì)象上的所有 symbols,私有字段將不允許反射。

“庫作者正在尋求一種擁有私人狀態(tài)的方式,以便開發(fā)者不能依賴它,”Terlson 解釋道?!凹词棺隽怂麄儾粦?yīng)該做的事情,庫也不喜歡打斷用戶?!崩纾愔械乃接袑傩詫⒃试S庫作者避免暴露內(nèi)部實(shí)現(xiàn)細(xì)節(jié),如果他們將來可能會(huì)修改的話。

BigInt 提案也處于第三階段。目前,ECMAScript 只有 64 位浮點(diǎn)數(shù)類型,但許多平臺(tái)和 web API 使用 64 位整數(shù) — 包括 Twitter 用作推文 ID 的 64 位整數(shù)?!澳悴荒茉賹?JavaScript 中的推文 ID 表示為數(shù)字,”Terlson 解釋道?!八鼈儽仨毐硎緸橐粋€(gè)字符串。” BigInt 是一個(gè)更通用的提案,用于添加任意精度的整數(shù),而不只是添加 64 位整數(shù)。加密 API 和高精度計(jì)時(shí)器也將利用這一點(diǎn),Terlson 預(yù)計(jì) JIT JavaScript 引擎可能會(huì)使用原生 64 位字段來提供大整數(shù)以提升性能。

兩項(xiàng)提案已經(jīng)進(jìn)入第四階段;讓 catch 綁定成為可選項(xiàng)(如果你不需要實(shí)際使用變量,就不必再將變量傳遞給 catch 塊),以及進(jìn)行小的語法更改以處理 JSON 和 ECMAScript 字符串格式之間的不匹配。這些將與其他在未來幾個(gè)月內(nèi)取得進(jìn)展的提案一起進(jìn)入 ECMAScript 2019。

好了,本文就給大家介紹到這里,希望對(duì)大家有所幫助!

相關(guān)文章

  • Textarea根據(jù)內(nèi)容自適應(yīng)高度

    Textarea根據(jù)內(nèi)容自適應(yīng)高度

    使用JAVASCRIPT控制Textarea內(nèi)容自適應(yīng)高度,實(shí)施起來很簡單,很平滑。
    2013-10-10
  • JS樹形菜單組件Bootstrap TreeView使用方法詳解

    JS樹形菜單組件Bootstrap TreeView使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了js組件Bootstrap TreeView使用方法,本文一部分針對(duì)于bootstrap的treeview的實(shí)踐,另一部分是介紹自己寫的樹形菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JS實(shí)現(xiàn)JSON.stringify的實(shí)例代碼講解

    JS實(shí)現(xiàn)JSON.stringify的實(shí)例代碼講解

    JSON.stringify是瀏覽器高版本帶的一個(gè)將JS的Objtect對(duì)象轉(zhuǎn)換為JSON字符串的一個(gè)方法,不過再IE6下面,并不存在JSON這一對(duì)象,因此,用到此方法時(shí),需要寫一套兼容性的代碼。接下來通過本文給大家分享JS實(shí)現(xiàn)JSON.stringify的實(shí)例代碼,需要的朋友參考下吧
    2017-02-02
  • 微信小程序?qū)崿F(xiàn)單選選項(xiàng)卡切換效果

    微信小程序?qū)崿F(xiàn)單選選項(xiàng)卡切換效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)單選選項(xiàng)卡切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • TypeScript?背后的結(jié)構(gòu)化類型系統(tǒng)原理詳解

    TypeScript?背后的結(jié)構(gòu)化類型系統(tǒng)原理詳解

    這篇文章主要為大家介紹了TypeScript?背后的結(jié)構(gòu)化類型系統(tǒng)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 學(xué)習(xí)JavaScript設(shè)計(jì)模式之中介者模式

    學(xué)習(xí)JavaScript設(shè)計(jì)模式之中介者模式

    這篇文章主要為大家介紹了JavaScript設(shè)計(jì)模式中的中介者模式,對(duì)JavaScript設(shè)計(jì)模式感興趣的小伙伴們可以參考一下
    2016-01-01
  • echarts動(dòng)態(tài)渲染柱狀圖背景顏色及頂部數(shù)值方法詳解

    echarts動(dòng)態(tài)渲染柱狀圖背景顏色及頂部數(shù)值方法詳解

    在使用echarts時(shí),有時(shí)需要給柱狀圖設(shè)置背景,下面這篇文章主要給大家介紹了關(guān)于echarts動(dòng)態(tài)渲染柱狀圖背景顏色及頂部數(shù)值的相關(guān)資料,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 淺談JavaScript中的屬性:如何遍歷屬性

    淺談JavaScript中的屬性:如何遍歷屬性

    下面小編就為大家?guī)硪黄獪\談JavaScript中的屬性:如何遍歷屬性。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Express與NodeJs創(chuàng)建服務(wù)器的兩種方法

    Express與NodeJs創(chuàng)建服務(wù)器的兩種方法

    本文主要介紹了NodeJs創(chuàng)建Web服務(wù)器;Express創(chuàng)建Web服務(wù)器的兩種方法,具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Cookie 注入是怎樣產(chǎn)生的

    Cookie 注入是怎樣產(chǎn)生的

    現(xiàn)在很多網(wǎng)站都加了防注入系統(tǒng)代碼,你輸入注入語句將無法注入~~感覺這樣的防注入系統(tǒng)不錯(cuò),但防注入系統(tǒng)沒有注意到 Cookies 的問題!所以就有了Cookies注入~~
    2009-04-04

最新評(píng)論