• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mytry
V2EX  ›  程序员

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

  •  1
     
  •   mytry · Dec 21, 2018 · 1697 views
    This topic created in 2720 days ago, the information mentioned may be changed or developed.

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2760 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:48 · PVG 23:48 · LAX 08:48 · JFK 11:48
    ♥ Do have faith in what you're doing.