Discuss / JavaScript / 廖老师举的斐波那契数列的例子的输出好像是不对的!

廖老师举的斐波那契数列的例子的输出好像是不对的!

Topic source

王奋浩2015

#1 Created at ... [Delete] [Delete and Lock User]

我的Google Chrome浏览器版本 41.0.2272.76,得出的输出没有最后一个3,应该就是评论里x1ang_li给出的原因。是吧,廖老师?

漢江之泳

#2 Created at ... [Delete] [Delete and Lock User]

同发现输出不对。

根据函数定义,n = 1; 并且while中是n<max.

因此当fib(5)时: while (n < 5).

n=1, yield 0; return {value: 0, done: false} n=2, yield 1; return {value: 1, done: false} n=3, yield 1; return {value: 1, done: false} n=4, yield 2; return {value: 2, done: false} n=5, no yield; return {value: undefined, done: true}

对比可以知道,通过for..of语句后,虽然不需要自己判断返回对象的done属性,但当这个属性为true时,反而最后一项没有输出了。

查了一下官网上对for..of以及generator,虽然举了fib的例子,但是没有结对应的结果 。

还是自己写循环判断done的值吧。

我认为,这个输出只是在有yield值得情况下。 你说的n=5时,no yield,所以没有输出。


  • 1

Reply