JavaScript 循环模拟 for range 的风格怎么样

2018-12-21 11:52:13 +08:00
 mytry

很多语言都内置范围循环的语法,比如 lua:

for i = 0, 9 do
	print(i)
end

其他比如 python 也支持 for range 循环。

事实上,ES6 通过 for of 和生成器也可以实现类似的 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 = 0; i < n; i++) 肯定要差一些,但在性能不重要的场合下,这种风格看起来是不是更简洁一些?

比如循环因子只出现 1 处,而传统的循环则出现 3 处。

比如循环因子可以用 const 代替 let 定义。

比如不用纠结用 i++ 还是 ++i 等等。

当然进一步扩展 range 函数,还可以实现 0, -1, -2, ... 递减循环,以及其他更多功能。

1341 次点击
所在节点    程序员
0 条回复

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

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

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

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

© 2021 V2EX