摘要:異步編程前異步編程的解決方式回調函數事件監聽發布訂閱自定義提供了原生的對象,統一了用法和標準。如果不設置回調函數,或在中再次拋出錯誤。函數內部語句返回的值,會成為方法回調函數的參數。
ECMAScript 6.0于2015 年 6 月正式發布了,成為JavaScript 語言的下一代標準。ES6增加的語言特性解決了哪些問題,會給開發者哪些便利,是本文主要探討的問題。
增加了對unicode字符的支持ES5對字符的處理有限,無法很好地處理碼點大于0xFFFF的字符。
ES6在string原生方法中支持碼點大于0xFFFF的字符,取得碼點或是遍歷,都可以直接操作;并且對字符不同的表示方法做了統一化。
在正則表達式里新增u s修飾符,使得正則對特殊字符的匹配不需要開發者額外處理。
異步編程ES6 前異步編程的解決方式:
回調函數
事件監聽
發布/訂閱
自定義promise
PromiseES6提供了原生的Promise對象,統一了用法和標準。
對象的狀態不受外界影響。能夠方便地獲取異步操作的狀態、賦予對應操作。
一旦狀態改變,就不會再變,任何時候都可以得到這個結果。
缺點
無法取消Promise,一旦新建它就會立即執行,無法中途取消。
如果不設置回調函數,或在catch中再次拋出錯誤。Promise內部拋出的錯誤,不會反應到外部。
當處于pending狀態時,無法得知目前進展到哪一個階段(剛剛開始還是即將完成)。
GeneratorGenerator 函數形式上與普通函數無異,特征有二
function關鍵字與函數名之間有一個星號;
函數體內部使用yield表達式,來表明函數執行的狀態。
意義:
可以交出函數的執行權(即暫停執行)
函數體內外的數據交換
可以在 Generator 函數運行的不同階段,調整函數行為。包括從外部向內部注入不同的值,控制返回和拋出錯誤。
async(ES2017 標準引入)
從理解上來說, async函數相當于把Generator 函數的星號(*)替換成async,將yield替換成await。
但相比較generate而言,內置執行器,有更易于理解的語義。
async函數返回一個 Promise 對象,可以使用then方法添加回調函數。async函數內部return語句返回的值,會成為then方法回調函數的參數。
當函數執行的時候,一旦遇到await就會先返回,等到異步操作完成,再接著執行函數體內后面的語句。
減少全局變量和方法比如,ES6 將全局方法parseInt()和parseFloat(),移植到Number對象上面。 逐步減少全局性方法,使得語言逐步模塊化。
代碼作用域 變量的聲明方式增加let, const的變量聲明方式,不存在變量提升,不允許重復聲明,使語言使用更加嚴謹。
塊級作用域使得變量的作用域更利于管理,也使得立即執行函數表達式不再必要了。
箭頭函數讓this綁定定義時所在的作用域,而不是指向運行時所在的作用域,也使得表達更加簡潔。
語法糖ES6推出了模版字符串,使得多行字符串及夾雜變量的字符串寫起來更加方便。
對象增加屬性名表達式與簡潔表示法。
增加遍歷器機制,為各種不同的數據結構提供統一的訪問機制。
增加解構的語法,取值更直觀方便。
增加class關鍵字來定義類,過去,生成實例對象的傳統方法是通過構造函數。不再和傳統面向對象語言有大的差異。且支持extends。
元編程引入Proxy對象,可以攔截某些操作并實現自定義行為。
引入 Rflect對象,可以獲取默認操作,可以將默認操作從處理程序轉發到目標。
Symbolsymbol 是一種基本數據類型 ,提供一種機制,保證每個屬性的名字都是獨一無二,從根本上防止屬性名的沖突。
更多的原生方法ES6提供了更多的原生方法,避免了開發者重復造輪子。如字符串的查找。
正則的匹配規則,如新加的y、s修飾符。
增加了set、map的數據結構。
增加Number.EPSILON等數值方法,使得對數值操作易于在精度方面進行控制。
//雖然JavaScript 不適合進行科學和金融方面的精確計算
增加對對象的操作與讀取的API。
優化對尾遞歸進行優化,賦予javscript運行復雜度更高的方法的能力。
參考
ECMAScript 6 入門
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93304.html
摘要:的新特性哪些適合使用我們參考使用進行開發的思考文章推薦的新特性,僅使用三星的。另外推薦閱讀探秘系列的新特性是否通過轉換后還有兼容問題團隊中又同學正在驗證,我們驗證的環境是,我們最終會使用三星特性加上兼容性的。 showImg(https://segmentfault.com/img/bVrjev); 最近項目中的一個模塊正式引入的ES6,由于是引入新技術,也遇到了一些問題,下面分享下整...
摘要:的翻譯文檔由的維護很多人說,阮老師已經有一本關于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...
摘要:執行函數會返回一個遍歷器對象,每一次函數里面的都相當一次遍歷器對象的方法,并且可以通過方法傳入自定義的來改變函數的行為。函數可以通過配合函數更輕松更優雅的實現異步編程和控制流管理。它和構造函數的不同點類的內部定義的所有方法,都是不可枚舉的。 let const的命令 在ES6之前,聲明變量只能用var,var方式聲明變量其實是很不合理的,準確的說,是因為ES5里面沒有塊級作用域是很不合...
摘要:我們在之前文章與面向對象編程中,說到了目前大部分框架和庫,都采用了面向對象方式編程。那么具體是怎么樣應用的呢面向對象編程,最典型和最基礎的作用就是封裝,封裝的好處就是代碼的能夠復用,模塊化,進行項目和文件的組織。模塊化在中的應用。 我們在之前文章《ES6 class與面向對象編程》中,說到了目前大部分框架和庫,都采用了面向對象方式編程。那么具體是怎么樣應用的呢?面向對象編程,最典型和最...
摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。寫一個符合規范并可配合使用的寫一個符合規范并可配合使用的理解的工作原理采用回調函數來處理異步編程。 JavaScript怎么使用循環代替(異步)遞歸 問題描述 在開發過程中,遇到一個需求:在系統初始化時通過http獲取一個第三方服務器端的列表,第三方服務器提供了一個接口,可通過...
閱讀 2142·2023-04-26 00:00
閱讀 3240·2021-09-24 10:37
閱讀 3529·2021-09-07 09:58
閱讀 1518·2019-08-30 15:56
閱讀 2218·2019-08-30 13:11
閱讀 2311·2019-08-29 16:38
閱讀 960·2019-08-29 12:58
閱讀 1876·2019-08-27 10:54