JS 使用 for range 循环好看吗~

2019-01-07 16:04:29 +08:00
 mytry

自己实现一个 range 迭代器函数,模拟类似 python 的 for range 循环:

function* range(beg, end, step = 1) {
  for (let i = 0; i < end; i += step)
    yield i;
}


for (const i of range(0, 5))
  console.log(i);	// 0, 1, 2, 3, 4


for (const i of range(0, 10, 2))
  console.log(i);	// 0, 2, 4, 6, 8

虽然性能略差,但看起来是不是更简洁一些~

(之前发的贴沉了,所以重发一次)

1959 次点击
所在节点    程序员
7 条回复
dicc
2019-01-07 16:34:12 +08:00
可以可以,老哥,收藏了. 我就讨厌写这种 c++类的 for, 后端
zenxds
2019-01-07 16:50:25 +08:00
let i = beg;
PureWhiteWu
2019-01-07 16:52:26 +08:00
有 bug。
beg 没用上。
zenxds
2019-01-07 16:52:39 +08:00
而且 beg 是可选参数
PureWhiteWu
2019-01-07 16:52:41 +08:00
虽然好看,但是有 bug,一点不实用,也不能用。
NotNil1
2019-01-07 17:40:51 +08:00
let a = range(0,5)
i //ReferenceError: i is not defined
a.next()
i //0
mytry
2019-01-08 10:38:56 +08:00
笔误,for (let i = beg; i < end; i += step)。另外 range 函数可以继续扩展,比如支持递减循环,beg 可选等等~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/524678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX