From 560cc6272af0ef41b156ce765fe650ee319b02f0 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 16 Jun 2014 05:57:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9generator=E5=92=8Cclass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 15 ++++++++++++++- docs/generator.md | 7 ++++--- docs/intro.md | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/docs/class.md b/docs/class.md index 134d782..81bdb77 100644 --- a/docs/class.md +++ b/docs/class.md @@ -67,7 +67,20 @@ export var year = 1973; ``` -上面是profile.js,ES6将其视为一个模块,里面用export关键字输出了三个变量。其他js文件就可以通过import关键字加载这个模块(文件)。 +上面是profile.js,ES6将其视为一个模块,里面用export关键字输出了三个变量。export的写法,除了像上面这样,还有另外一种,两者是等价的。 + +```javascript + +// profile.js +var firstName = 'David'; +var lastName = 'Belle'; +var year = 1973; + +export {firstName, lastName, year} + +``` + +使用export定义模块以后,其他js文件就可以通过import关键字加载这个模块(文件)。 ```javascript diff --git a/docs/generator.md b/docs/generator.md index 4a12b12..8c1dc09 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -11,6 +11,7 @@ Generator函数就是普通函数,但是有两个特征。一是,function关 function* helloWorldGenerator() { yield 'hello'; yield 'world'; + return 'ending'; } var hw = helloWorldGenerator(); @@ -30,7 +31,7 @@ hw.next() // { value: 'world', done: false } hw.next() -// { value: undefined, done: true } +// { value: 'ending', done: true } hw.next() // { value: undefined, done: true } @@ -43,9 +44,9 @@ hw.next() 第二次调用,函数从上次yield语句停下的地方,一直执行到下一个yield语句。next方法返回的对象的value属性就是当前yield语句的值world,done属性的值false,表示遍历还没有结束。 -第三次调用,函数从上次yield语句停下的地方,一直执行到函数结束。next方法返回的对象的value属性就是函数最后的返回值,由于上例的函数没有return语句(即没有返回值),所以value属性的值为undefined,done属性的值true,表示遍历已经结束。 +第三次调用,函数从上次yield语句停下的地方,一直执行到return语句(如果没有return语句,就执行到函数结束)。next方法返回的对象的value属性,就是紧跟在return语句后面的表达式的值(如果没有return语句,则value属性的值为undefined),done属性的值true,表示遍历已经结束。 -第四次调用,此时函数已经运行完毕,next方法返回与前一次一样的值,value属性为undefined,done属性为true。以后再调用next方法,返回的都是这个值。 +第四次调用,此时函数已经运行完毕,next方法返回对象的value属性为undefined,done属性为true。以后再调用next方法,返回的都是这个值。 总结一下,Generator函数使用iterator接口,每次调用next方法的返回值,就是一个标准的iterator返回值:有着value和done两个属性的对象。其中,value是yield语句后面那个表达式的值,done是一个布尔值,表示是否遍历结束。 diff --git a/docs/intro.md b/docs/intro.md index 29753aa..eca7aec 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -30,7 +30,7 @@ ECMAScript是JavaScript语言的国际标准,JavaScript是ECMAScript的实现 2013年12月,ECMAScript 6草案发布。然后是12个月的讨论期,听取各方反馈。 -2014年12月,ECMAScript 6预计将发布正式版本。 +2015年6月,ECMAScript 6预计将发布正式版本。 ECMA的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订ECMAScript标准,成员包括Microsoft、Mozilla、Google等大公司。TC39的总体考虑是,ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成。当前,JavaScript.next指的是ES6,当第六版发布以后,将指ES7。TC39估计,ES5会在2013年的年中成为JavaScript开发的主流标准,并在今后五年中一直保持这个位置。