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

本文介绍了作者从Python转向Node.js的过程,并深入探讨了ECMAScript 6的一些关键特性,包括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<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有篇文章写得挺好。主要是为了解决多层嵌套的问题。将嵌套回调转化成链式调用。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值