V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mytry
V2EX  ›  程序员

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

  •  1
     
  •   mytry · 2018-12-21 11:52:13 +08:00 · 1332 次点击
    这是一个创建于 1946 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很多语言都内置范围循环的语法,比如 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, ... 递减循环,以及其他更多功能。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2730 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:04 · PVG 10:04 · LAX 19:04 · JFK 22:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.