成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES6解決了什么問題

zzzmh / 1089人閱讀

摘要:異步編程前異步編程的解決方式回調(diào)函數(shù)事件監(jiān)聽發(fā)布訂閱自定義提供了原生的對(duì)象,統(tǒng)一了用法和標(biāo)準(zhǔn)。如果不設(shè)置回調(diào)函數(shù),或在中再次拋出錯(cuò)誤。函數(shù)內(nèi)部語句返回的值,會(huì)成為方法回調(diào)函數(shù)的參數(shù)。

ECMAScript 6.0于2015 年 6 月正式發(fā)布了,成為JavaScript 語言的下一代標(biāo)準(zhǔn)。ES6增加的語言特性解決了哪些問題,會(huì)給開發(fā)者哪些便利,是本文主要探討的問題。

增加了對(duì)unicode字符的支持

ES5對(duì)字符的處理有限,無法很好地處理碼點(diǎn)大于0xFFFF的字符。

ES6在string原生方法中支持碼點(diǎn)大于0xFFFF的字符,取得碼點(diǎn)或是遍歷,都可以直接操作;并且對(duì)字符不同的表示方法做了統(tǒng)一化。

在正則表達(dá)式里新增u s修飾符,使得正則對(duì)特殊字符的匹配不需要開發(fā)者額外處理。

異步編程

ES6 前異步編程的解決方式:

回調(diào)函數(shù)

事件監(jiān)聽

發(fā)布/訂閱

自定義promise

Promise

ES6提供了原生的Promise對(duì)象,統(tǒng)一了用法和標(biāo)準(zhǔn)。

對(duì)象的狀態(tài)不受外界影響。能夠方便地獲取異步操作的狀態(tài)、賦予對(duì)應(yīng)操作。

一旦狀態(tài)改變,就不會(huì)再變,任何時(shí)候都可以得到這個(gè)結(jié)果。

缺點(diǎn)

無法取消Promise,一旦新建它就會(huì)立即執(zhí)行,無法中途取消。

如果不設(shè)置回調(diào)函數(shù),或在catch中再次拋出錯(cuò)誤。Promise內(nèi)部拋出的錯(cuò)誤,不會(huì)反應(yīng)到外部。

當(dāng)處于pending狀態(tài)時(shí),無法得知目前進(jìn)展到哪一個(gè)階段(剛剛開始還是即將完成)。

Generator

Generator 函數(shù)形式上與普通函數(shù)無異,特征有二

function關(guān)鍵字與函數(shù)名之間有一個(gè)星號(hào);

函數(shù)體內(nèi)部使用yield表達(dá)式,來表明函數(shù)執(zhí)行的狀態(tài)。

意義:

可以交出函數(shù)的執(zhí)行權(quán)(即暫停執(zhí)行)

函數(shù)體內(nèi)外的數(shù)據(jù)交換

可以在 Generator 函數(shù)運(yùn)行的不同階段,調(diào)整函數(shù)行為。包括從外部向內(nèi)部注入不同的值,控制返回和拋出錯(cuò)誤。

async

(ES2017 標(biāo)準(zhǔn)引入)

從理解上來說, async函數(shù)相當(dāng)于把Generator 函數(shù)的星號(hào)(*)替換成async,將yield替換成await。

但相比較generate而言,內(nèi)置執(zhí)行器,有更易于理解的語義。

async函數(shù)返回一個(gè) Promise 對(duì)象,可以使用then方法添加回調(diào)函數(shù)。async函數(shù)內(nèi)部return語句返回的值,會(huì)成為then方法回調(diào)函數(shù)的參數(shù)。

當(dāng)函數(shù)執(zhí)行的時(shí)候,一旦遇到await就會(huì)先返回,等到異步操作完成,再接著執(zhí)行函數(shù)體內(nèi)后面的語句。

減少全局變量和方法

比如,ES6 將全局方法parseInt()和parseFloat(),移植到Number對(duì)象上面。 逐步減少全局性方法,使得語言逐步模塊化。

代碼作用域 變量的聲明方式

增加let, const的變量聲明方式,不存在變量提升,不允許重復(fù)聲明,使語言使用更加嚴(yán)謹(jǐn)。

塊級(jí)作用域

使得變量的作用域更利于管理,也使得立即執(zhí)行函數(shù)表達(dá)式不再必要了。

箭頭函數(shù)

讓this綁定定義時(shí)所在的作用域,而不是指向運(yùn)行時(shí)所在的作用域,也使得表達(dá)更加簡(jiǎn)潔。

語法糖

ES6推出了模版字符串,使得多行字符串及夾雜變量的字符串寫起來更加方便。

對(duì)象增加屬性名表達(dá)式與簡(jiǎn)潔表示法。

增加遍歷器機(jī)制,為各種不同的數(shù)據(jù)結(jié)構(gòu)提供統(tǒng)一的訪問機(jī)制。

增加解構(gòu)的語法,取值更直觀方便。

增加class關(guān)鍵字來定義類,過去,生成實(shí)例對(duì)象的傳統(tǒng)方法是通過構(gòu)造函數(shù)。不再和傳統(tǒng)面向?qū)ο笳Z言有大的差異。且支持extends。

元編程

引入Proxy對(duì)象,可以攔截某些操作并實(shí)現(xiàn)自定義行為。

引入 Rflect對(duì)象,可以獲取默認(rèn)操作,可以將默認(rèn)操作從處理程序轉(zhuǎn)發(fā)到目標(biāo)。

Symbol

symbol 是一種基本數(shù)據(jù)類型 ,提供一種機(jī)制,保證每個(gè)屬性的名字都是獨(dú)一無二,從根本上防止屬性名的沖突。

更多的原生方法

ES6提供了更多的原生方法,避免了開發(fā)者重復(fù)造輪子。如字符串的查找。

正則的匹配規(guī)則,如新加的y、s修飾符。

增加了set、map的數(shù)據(jù)結(jié)構(gòu)。

增加Number.EPSILON等數(shù)值方法,使得對(duì)數(shù)值操作易于在精度方面進(jìn)行控制。
//雖然JavaScript 不適合進(jìn)行科學(xué)和金融方面的精確計(jì)算

增加對(duì)對(duì)象的操作與讀取的API。

優(yōu)化

對(duì)尾遞歸進(jìn)行優(yōu)化,賦予javscript運(yùn)行復(fù)雜度更高的方法的能力。

參考

ECMAScript 6 入門

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93304.html

相關(guān)文章

  • ES6引入前需要解決問題

    摘要:的新特性哪些適合使用我們參考使用進(jìn)行開發(fā)的思考文章推薦的新特性,僅使用三星的。另外推薦閱讀探秘系列的新特性是否通過轉(zhuǎn)換后還有兼容問題團(tuán)隊(duì)中又同學(xué)正在驗(yàn)證,我們驗(yàn)證的環(huán)境是,我們最終會(huì)使用三星特性加上兼容性的。 showImg(https://segmentfault.com/img/bVrjev); 最近項(xiàng)目中的一個(gè)模塊正式引入的ES6,由于是引入新技術(shù),也遇到了一些問題,下面分享下整...

    verano 評(píng)論0 收藏0
  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說,阮老師已經(jīng)有一本關(guān)于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評(píng)論0 收藏0
  • es6 promise面試

    摘要:執(zhí)行函數(shù)會(huì)返回一個(gè)遍歷器對(duì)象,每一次函數(shù)里面的都相當(dāng)一次遍歷器對(duì)象的方法,并且可以通過方法傳入自定義的來改變函數(shù)的行為。函數(shù)可以通過配合函數(shù)更輕松更優(yōu)雅的實(shí)現(xiàn)異步編程和控制流管理。它和構(gòu)造函數(shù)的不同點(diǎn)類的內(nèi)部定義的所有方法,都是不可枚舉的。 let const的命令 在ES6之前,聲明變量只能用var,var方式聲明變量其實(shí)是很不合理的,準(zhǔn)確的說,是因?yàn)镋S5里面沒有塊級(jí)作用域是很不合...

    timger 評(píng)論0 收藏0
  • ES6-class、模塊化在vue中應(yīng)用(10)

    摘要:我們?cè)谥拔恼屡c面向?qū)ο缶幊讨校f到了目前大部分框架和庫,都采用了面向?qū)ο蠓绞骄幊獭D敲淳唧w是怎么樣應(yīng)用的呢面向?qū)ο缶幊?,最典型和最基礎(chǔ)的作用就是封裝,封裝的好處就是代碼的能夠復(fù)用,模塊化,進(jìn)行項(xiàng)目和文件的組織。模塊化在中的應(yīng)用。 我們?cè)谥拔恼隆禘S6 class與面向?qū)ο缶幊獭分校f到了目前大部分框架和庫,都采用了面向?qū)ο蠓绞骄幊獭D敲淳唧w是怎么樣應(yīng)用的呢?面向?qū)ο缶幊?,最典型和?..

    endiat 評(píng)論0 收藏0
  • JavaScript 異步

    摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。寫一個(gè)符合規(guī)范并可配合使用的寫一個(gè)符合規(guī)范并可配合使用的理解的工作原理采用回調(diào)函數(shù)來處理異步編程。 JavaScript怎么使用循環(huán)代替(異步)遞歸 問題描述 在開發(fā)過程中,遇到一個(gè)需求:在系統(tǒng)初始化時(shí)通過http獲取一個(gè)第三方服務(wù)器端的列表,第三方服務(wù)器提供了一個(gè)接口,可通過...

    tuniutech 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

zzzmh

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<