码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-10-27 08:09:44      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   使用   java   for   div   on   

自从去了百度就好久没有更新博客了,看了以前写的东东,以前在小公司还是比较闲啊。讽刺的是这次又要换工作去小公司,才想起写篇博。。。

去了百度后先学了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<len; i++){},这时循环后的i就是undefined的了。


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有篇文章写得挺好。主要是为了解决多层嵌套的问题。将嵌套回调转化成链式调用。


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

标签:blog   http   io   ar   使用   java   for   div   on   

原文地址:http://blog.csdn.net/pusongyang/article/details/40502237

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!