一个Javascript的生成器函数是这样的:function *gen(n) { for (let i = 0; i < n; i++) { yield i; }}[...gen(10)]// <- (10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Javascript在声明的时候要多加一个星号。如果不加星号,会报SyntaxError。一个python的生成器函数是这样的:def gen(n): for i in range(n): yield i>>> list(gen(10))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]python在声明的时候不需要额外标识。直接用yield就行了。两个语言都用了yield关键词,工作原理也几乎相同,甚至可以说Javascript就是抄的python。那为什么Javascript反而要多加一个星号呢?这个星号有什么意义?为什么要这样设计?是Javascipt太特殊,还是python太特殊?我相信这应该是有原因的,毕竟ES2015的制定过程相当和谐(字面意义上的)
添加回答
举报
0/150
提交
取消