Javascript的生成器函数要多加一个星号,Python却不需要额外标识,为什么这样设计?

一个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的制定过程相当和谐(字面意义上的)


明月笑刀无情
浏览 562回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript