diff --git a/docs/destructuring.md b/docs/destructuring.md index fdf714f..cdd034d 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -599,7 +599,7 @@ var jsonData = { let { id, status, data: number } = jsonData; console.log(id, status, number) -// 42, OK, [867, 5309] +// 42, "OK", [867, 5309] ``` 上面代码可以快速提取JSON数据的值。 diff --git a/docs/generator.md b/docs/generator.md index 5cfce84..6bd52e7 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -235,7 +235,7 @@ function* foo(x) { var a = foo(5); a.next() // Object{value:6, done:false} a.next() // Object{value:NaN, done:false} -a.next() // Object{value:NaN, done:false} +a.next() // Object{value:NaN, done:true} var b = foo(5); b.next() // { value:6, done:false } @@ -599,7 +599,7 @@ function log(generator) { var v; console.log('starting generator'); try { - v = generator.next(); // { value: undefined, done: true } + v = generator.next(); console.log('第一次运行next方法', v); } catch (err) { console.log('捕捉错误', v); @@ -1129,17 +1129,17 @@ var clock = function() { 上面代码的clock函数一共有两种状态(Tick和Tock),每运行一次,就改变一次状态。这个函数如果用Generator实现,就是下面这样。 ```javascript -var clock = function*(_) { +var clock = function*() { while (true) { - yield _; console.log('Tick!'); - yield _; + yield; console.log('Tock!'); + yield; } }; ``` -上面的Generator实现与ES5实现对比,可以看到少了用来保存状态的外部变量ticking,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。 +上面的Generator实现与ES5实现对比,可以看到少了用来保存状态的外部变量`ticking`,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。 ### Generator与协程