自己实现一个 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
虽然性能略差,但看起来是不是更简洁一些~
(之前发的贴沉了,所以重发一次)
笔误,for (let i = beg; i < end; i += step)
1
dicc 2019-01-07 16:34:12 +08:00
可以可以,老哥,收藏了. 我就讨厌写这种 c++类的 for, 后端
|
2
zenxds 2019-01-07 16:50:25 +08:00
let i = beg;
|
3
PureWhiteWu 2019-01-07 16:52:26 +08:00
有 bug。
beg 没用上。 |
4
zenxds 2019-01-07 16:52:39 +08:00
而且 beg 是可选参数
|
5
PureWhiteWu 2019-01-07 16:52:41 +08:00
虽然好看,但是有 bug,一点不实用,也不能用。
|
6
NotNil1 2019-01-07 17:40:51 +08:00
let a = range(0,5)
i //ReferenceError: i is not defined a.next() i //0 |
7
mytry OP 笔误,for (let i = beg; i < end; i += step)。另外 range 函数可以继续扩展,比如支持递减循环,beg 可选等等~
|