javascript新特性let,function*,yield,promise

來源:互聯網
上載者:User

javascript新特性let,function*,yield,promise

自從去了百度就好久沒有更新部落格了,看了以前寫的東東,以前在小公司還是比較閑啊。諷刺的是這次又要換工作去小公司,才想起寫篇博。。。

去了百度後先學了python,然後前面的GG走了,我也不想用python了,就全力轉用nodejs了。

越來越喜歡上JS家族了,最近看了一下ECMA6的新特性,著實又增強了JS的生命力啊。看國外ASMJS大牛的視頻說,JS的作者只用了10天就創造了這門語言。

所以希望ECMA能夠繼續進步。

廢話多了些。下面乾貨來了。注意一下代碼要用node --harmony執行,代碼還要用strict模式運行。

let,其實就是塊級範圍申明變數的var。之前JS的var關鍵字是非塊級範圍的,而是函數級的。

例如arr=[0,1,2],我們經常寫迴圈for(var i=0,len=arr.length; i < len; i++){},其實迴圈後這個i是還可以訪問的2。這樣就很容易汙染環境變數。

如果用了let,for(let i=0,len=arr.length; i


function*,申明建構函式,返回{value:v,done:true_or_false}。建構函式可以調用next來擷取下一個值,可以構造類似於隨機數產生器。


yield和function*一起使用。在構造器函數中,yield可以暫停然後返回當前運算式的值。

例如function a(){yield 1;yield 2;}; var gen=a();console.log(gen.next());console.log(gen.next());console.log(gen.next());,結果是{value:1,done:false},{value:2,done:false},{value:undefined,done:true}.執行了構造a函數的第一行yield 1後,a函數退出並且儲存上下文,當再次執行next時會恢複a函數上下文繼續執行下一行b。


promise,這個非ECMA6特性,HTML5Rocks有篇文章寫得挺好。主要是為瞭解決多層嵌套的問題。將嵌套回調轉化成鏈式調用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.